【问题标题】:Is this method a mutator or accessor method?这个方法是修改器还是访问器方法?
【发布时间】:2018-11-18 20:17:18
【问题描述】:

我有以下方法,如果增长率小于 0,则返回 true,否则返回 false。我想知道它将是哪种方法,mutator 或 accessor。

    public boolean endangered(double GR) {
    if (GR < 0) {
        return true;
    } else {
        return false;
    }
}

它不会访问或改变任何值——它似乎是一个正在返回的新值,并且可能会在某处使用。

以下是完整的课程,如果有帮助的话:

public class Species {

    private int population;
    private double growthRATE;
    private String speciesName;
    private String endangered;

    public Species() {
        speciesName = "Dingo";
        population = 1000;
        growthRATE = 0.6;
    }

    public Species(String name, int population, double GR) {
        name = name;
        population = population;
        growthRATE = GR;
    }

    //Mutator methods

    //accessor methods


    public boolean endangered(double GR) {
        if (GR < 0) {
            return GR < 0;
        } else {
            return GR < 0;
        }
    }
}

【问题讨论】:

  • 它会改变任何状态吗?它是否访问任何状态?你的结论是什么?
  • 请注意,它应该只是return GR &lt; 0;
  • 考虑给GR参数一个更有意义的名字。
  • @neburRB 我知道这些问题的答案。我问他们是为了让自己考虑一下。您应该能够自己看到,此方法不访问任何状态,而仅使用调用者提供的参数。因此,由于它既不变异也不提供对任何状态的访问权限,根据定义,它既不是变异器也不是访问器。
  • 您的班级已经有一个growthRATE 字段。您不是要检查 that 字段是否为&lt; 0,而不是将其作为单独的参数吗?

标签: java syntax mutators


【解决方案1】:

没有。您不会改变任何实例,也不会返回字段实例。
你的方法有一些逻辑,所以你可以说它是一种逻辑/业务方法。

【讨论】:

    【解决方案2】:

    它既不是访问器也不是修改器。它不依赖于实例状态,所以它应该是static(我称之为utility 方法)。你可以在没有分支的情况下返回测试

    public static boolean endangered(double GR) {
        return GR < 0;
    }
    

    【讨论】:

    • 我不会说它应该是静态的。也许它打算被覆盖。也许它实现了一个接口方法。
    • @JBNizet 如果问题中有一个接口,我愿意承认这一点,因为(没有使用任何实例状态)它至少是值得商榷的(我觉得应该提到它)。
    • 方法可以在未来被覆盖,所以静态可能不是很好的添加选项。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    相关资源
    最近更新 更多