调用私有方法的层次结构时,哪个方法应该更改字段?
作者:互联网
当类的公共方法需要调用一个私有方法而导致一个字段被更改时,哪个方法应该更改该字段?是否有任何通用约定?一种方法优于另一种方法吗?
考虑以下两个代码段:
public class boolHolder {
private boolean theBool = false;
public void doYourThing() {
// Do a lot of other stuff
setBool();
}
private void setBool() {
// Do a lot of other stuff, justifying a private method for this
this.theBool = true;
}
}
VS
public class boolHolder {
private boolean theBool = false;
public void doYourThing() {
// Do a lot of other stuff
theBool = setBool();
}
private boolean setBool() {
// Do a lot of other stuff, justifying a private method for this
return true;
}
}
当然,这两个例子是一个非常简单的例子,但是我敢肯定,我并不是唯一一个以公共方法结尾的人,这是一棵巨大的私有方法树.应该在分支的末尾设置字段,还是应该将值传回?
解决方法:
我认为,只有一个地方可以设置字段的值,这应该更有意义,它应该是最后一个被调用的方法.它使代码更易于理解.您的第一个片段对我来说更具可读性.
我认为这是支持此约定的另一个代码段:
假设我们有一个带有两个设置器的int成员-一个接受一个int,另一个接受该int的String表示形式(例如,如果我们从XML String反序列化实例,则使用它).
int value;
public void setIntField (String value)
throws SomeException
{
if (value == null)
throw new SomeException();
try {
int val = Integer.parseInt (value);
setIntField (val);
}
catch (NumberFormatException ex) {
throw new SomeException();
}
}
public void setIntField (int value)
throws SomeException ()
{
if (value < MIN_ALLOWED || value > MAX_ALLOWED)
throw new SomeException ();
this.value = value;
}
标签:conventions,field,java,methods 来源: https://codeday.me/bug/20191121/2051414.html