2010-11-02 38 views
3

“this”引用当前类中的实例变量是否可以接受?在PHP中,这是你必须这样做的,但是我注意到在Java中你可以直接调用这个变量。Java类中的“this”的常规用法引用实例变量

我个人发现“this.variable”更容易理解,但如果不正常,我不想开发不好的编码习惯。

谢谢!

public class MyClass { 

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

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

可接受性严格依赖于您的样式指导原则,因为完全相同的代码是以任何方式生成的。有些需要它,有些则不允许,并且很可能不关心。 – Gabe 2010-11-02 05:48:59

回答

7

就像人们一直在说的那样,它不是必需的,但它是可以接受的。

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

private int value; 

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

类变量,并使用相同的名称,参数之间的区分哪。我发现自己在我制作的几乎每个制作人中都使用这种模式,而且大约是我使用“this”关键字的唯一时间。

1

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

0

使用它或不,仅在整个代码库中保持一致。如果变量被屏蔽(通过参数或本地方法变量),您必须使用它

0

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

1

我会写你这样的代码:

public class MyClass { 

    private int myInt; 

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

的差异你的是(去掉无用的Javadoc旁),在我的代码中的参数具有相同的名称成员变量。其他用户更喜欢赋予成员变量与参数不同的名称,但由于视觉平衡,我们宁愿在必要时将成员变量前缀this.加在一起。在使用这个标准的Java编程超过10年的时间里,我们从未有过使用错误变量导致的错误。

+0

我想我会选择倾向于使用不同名称的阵营,因为它可以帮助我理解我的设置。对于多余的文档抱歉。 – james 2010-11-02 05:56:33

+1

如果一个方法有多个参数,你如何命名参数? 'value1','value2','value3',...?另一种方法是用一些前缀(或后缀)参数或成员变量。但是,为什么发现一个新的前缀,如果已经有一个 - “this.'? – Mot 2010-11-02 06:01:59