最近我得到了一个代码审查注释,使用getter方法访问同一类方法中的私有实例变量.这真的是一个好习惯吗?我觉得它在代码中添加了不必要的复杂功能.推荐的方式是什么?
public class SomeClass {
String abc;
public boolean compare(SomeClass otherClass) {
otherClass.getAbc().equals(abc);
}
}
public class SomeClass {
String abc;
public boolean compare(SomeClass otherClass) {
otherClass.getAbc().equals(getAbc());
}
}
Run Code Online (Sandbox Code Playgroud)
我看到你的第一种方法存在一个非常具体的问题.你不一致地使用getter.
public boolean compare(SomeClass otherClass) {
otherClass.getAbc().equals(abc);
//.getAbc() for one, but direct access for the other!!
}
Run Code Online (Sandbox Code Playgroud)
你必须比较一个equals方法的苹果和苹果,并且如果使用getter检索你的一个变量进行比较(我假设它是公共的并且可以被覆盖)而另一个直接从私有变量检索(不能是被覆盖的,然后你使你的代码比它需要的更脆弱.如果有人扩展你的课程并改变了getter方法怎么办?你的代码将被软管化.因此,在两者上使用getter或者不使用getter.
考虑到这一点,其中任何一个都比原来更好,因为行为更稳定:
public boolean compare(SomeClass otherClass) {
otherClass.abc.equals(abc);
}
public boolean compare(SomeClass otherClass) {
otherClass.getAbc().equals(getAbc());
}
Run Code Online (Sandbox Code Playgroud)
出于一般目的,它取决于您使用数据的方式.David的回答列出了一些吸气剂的一般用法资源.
您的审稿人完全有可能只谈论一般情况,但我认为他们可能只是很难沟通问题.
| 归档时间: |
|
| 查看次数: |
155 次 |
| 最近记录: |