在我工作的地方,我看到很多班级都做了这样的事情:
public class ClassThatCallsItsOwnGettersAndSetters {
private String field;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
public void methodWithLogic() {
setField("value");
//do stuff
String localField = getField();
//do stuff with "localField"
}
}
如果我是从头开始写的,那我应该写成methodWithLogic()
这样的:
public class ClassThatUsesItsOwnFields {
private String field;
public String getField() {
return field;
}
public void setField(String field) {
this.field = field;
}
public void methodWithLogic() {
field = "value";
//do stuff
//do stuff with "field"
}
}
我感到,当类调用其自己的getter和setter时,它将使代码更难阅读。在我看来,这几乎意味着在该方法调用中正在发生复杂的逻辑,即使在我们看来,它从来没有发生过。当我调试一些不熟悉的代码时,谁会说该错误不是该方法的副作用?换句话说,这使我在理解代码的过程中走了很多路。
第一种方法有好处吗?第一种方法实际上更好吗?