我在OOP中阅读了很多大型项目,我注意到他们中有很多人使用this.[variable]
,[ClassName].[staticVariable]
。例如:
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 :(得分:3)
基本上,您可以确定您正在使用类属性,而不是使用在方法内创建的变量,或者可能作为参数接收。
而且,如果你有一个同名的本地var,它会有所帮助。
最后一个原因:可读性。
答案 1 :(得分:2)
在某些情况下这是必要的,例如,当您需要使用成员变量而不是同名的本地方法参数时,需要this.
。
静态变量也是必需的,你需要特定哪个类要从中获取静态变量(许多类可以定义具有相同名称的静态变量)。
除了必要的案例外,它实际上是编码风格的问题。我的建议是使用,只要它有助于解决潜在的歧义。
答案 2 :(得分:1)
在复杂的方法中,有时很好地区分这个类中的实例变量和特定函数中的局部变量。当你使用“this”时,这种区别就很明显了。
答案 3 :(得分:0)
对于小块代码而言无关紧要,但有时会发生这种情况:
public float getX() { .... int mX = someFunc() ... return mX; }
在这种情况下,返回本地值而不是成员变量。
您通常希望明确并说出this.mX
。但是,你不应该有很大的功能。
答案 4 :(得分:0)
this.? '?' is a member variable, this is a reference to the current object.
请参阅this
答案 5 :(得分:0)
它的语法,如果你想访问类的实例变量,可以使用(对象的引用)。(实例变量名).Like
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