2012-02-07 77 views
1

我读过OOP中的很多大型项目,我注意到其中很多人使用this.[variable],[ClassName].[staticVariable]。例如:使用“this”的好处。

public class ABC { 

    private float mX; 
    public static float y;  

    public float getX() { 
     return this.mX; 
    } 

    public float doSomethingWithY() { 
     return ABC.y; 
    } 

} 

即使使用Eclipse自动生成Getters & Setters功能,还配备了this.[variable],虽然这是不必要的,因为没有本地变量声明那里。

使用这些符号有什么优点,或者它只是一种代码风格?

编辑所以有些人不会误解。我知道this[ClassName].[staticVariable]代表什么。但在这种情况下,这是不必要的。问题是:即使没有必要,为什么古鲁编码器仍然会添加它?当他们需要更新/修复一个庞大的项目时,是否会有优势和劣势?

+0

它的编码风格......通过了StyleCop使用,默认情况下不被resharper使用。 – Tanmoy 2012-02-07 05:56:02

回答

2

在某些情况下这是必需的,例如this.是需要使用成员变量而不是同名的本地方法参数时需要的。

这对静态变量也是必要的,您需要指定哪个类要获取静态变量(许多类可以定义具有相同名称的静态变量)。

除了必要的情况之外,它确实是一种编码风格。我的建议是,只要它有助于解决潜在的歧义性,就可以使用它

+0

有什么缺点吗?使用这种方式我也感到安全,因为我永远不会遇到模棱两可的问题。 – 2012-02-07 06:29:13

+0

除了一些额外的输入外,没有任何真正的缺点。去野外。 – mikera 2012-02-07 06:32:00

1

在复杂的方法中,有时很好地区分此类中的实例变量和特定函数中的局部变量。当您使用“this”时,这种区别立即显而易见。

0

对于小片的代码也没关系,但有时会发生这种情况:

 
public float getX() { 
    .... 
    int mX = someFunc() 
    ... 
    return mX; 
} 

在这种情况下,当地的值返回,而不是成员变量。

您通常想要明确表示并说this.mX。不过,你不应该有巨大的功能。

0
this.? '?' is a member variable, this is a reference to the current object. 

看到this

3
与此

基本上,你肯定知道您使用的是类属性的工作,不与方法中创建的变量或可能收到的参数。

而且,它有助于防止具有相同名称的本地变量。

而最终的原因:可读性。

0

它的语法,如果你要访问一个类的实例变量使用(该对象的引用)。(实例变量名)。就像

A a= new A();// for non static class,this for the current object 
a.(instance variable name) 
// for non static class do the same but use (class name).variable name