其他分享
首页 > 其他分享> > 调用私有方法的层次结构时,哪个方法应该更改字段?

调用私有方法的层次结构时,哪个方法应该更改字段?

作者:互联网

当类的公共方法需要调用一个私有方法而导致一个字段被更改时,哪个方法应该更改该字段?是否有任何通用约定?一种方法优于另一种方法吗?

考虑以下两个代码段:

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