【问题标题】:Conventional usage of "this" in Java class to refer to an instance variableJava 类中“this”的常规用法是指实例变量
【发布时间】:2011-05-03 18:38:33
【问题描述】:

以下使用“this”来引用当前类中的实例变量是否可以接受?在 PHP 中你必须这样做,但我注意到在 Java 中你可以直接按名称调用变量。

我个人认为“this.variable”更容易理解,但如果这不正常,我不想养成不良的编码习惯。

谢谢!

public class MyClass {  

    /**
     * Private variable
     */
    private int myInt;

    /**
     * Setter method
     */
    public void setMyInt(int value) {
        this.myInt = value;
    }   
}

【问题讨论】:

  • 可接受性严格取决于您的样式指南,因为无论哪种方式都会生成完全相同的代码。有些人要求,有些人不允许,而且很可能不在乎。

标签: java coding-style conventions instance-variables


【解决方案1】:

这在 Java 中是完全可以接受的做法,尽管它不是必需的(正如您所提到的)。

【讨论】:

    【解决方案2】:

    使用或不使用它,只要在整个代码库中保持一致即可。如果变量被屏蔽(通过参数或局部方法变量),则必须使用它

    【讨论】:

      【解决方案3】:

      除非您的工作场所或项目有明确禁止以这种方式使用this 的风格指南,否则我会说您所做的一切都很好。我个人仅在绝对必要时才使用this(例如,当我使用同名方法参数初始化实例变量时),但我看到很多代码总是使用this 来引用成员。它可能更具可读性,而且它的可读性肯定不会差很多,所以去吧!

      【讨论】:

        【解决方案4】:

        我会这样写你的代码:

        public class MyClass {
        
          private int myInt;
        
          public void setMyInt(int myInt) {
            this.myInt = myInt;
          }
        }
        

        与您的不同之处在于(除了删除了无用的 Javadoc)在我的代码中,参数与成员变量具有相同的名称。其他用户更喜欢为成员变量指定与参数不同的名称,但出于视觉平衡,我们更喜欢在成员变量在必要时前缀this.。在使用此标准进行 Java 编码的 10 多年中,我们从未遇到过由使用错误变量引起的错误。

        【讨论】:

        • 我想我喜欢我的参数有一个不同的名字,因为它可以帮助我理解我在设置什么。抱歉,文档过多。
        • 如果一个方法有多个参数,如何命名参数? value1, value2, value3, ...?另一种方法是为参数或成员变量加上前缀(或后缀)。但是,如果已经有一个前缀 - this.,为什么还要发明一个新前缀?
        【解决方案5】:

        正如人们所说,这不是必需的,但可以接受。

        话虽如此,如果你正在做这样的事情是必要的:

        private int value;
        
        public void setValue(int value) {
             this.value = value;
        }
        

        区分类变量和同名参数。我发现自己几乎在我制作的每一个 setter 中都使用了这种模式,并且是我唯一一次使用 'this' 关键字。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-25
          • 1970-01-01
          • 2013-05-06
          • 2014-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多