ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2019-11-21 11:03:55  阅读:212  来源: 互联网

标签:conventions field java methods


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

考虑以下两个代码段:

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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有