public void doThings1(){
this.doSomething();
this.doSomethingElse();
this.doThirdThing();
}
public void doThings2(){
this.doSomethingElse();
this.doThirdThing();
}
这感觉像是一个非常基本的问题,但是 0 参数更改器(mutator)是否会令人皱眉?我觉得我很少看到对象中的方法能够以预定义的方式直接操作一个或多个对象的参数。也许(如上所示)您需要以不同的顺序执行一些可重复的代码部分,因此为每个场景创建封装更细粒度方法的方法?如果这被认为是不好的,那么更好的方法是什么,如果不是,为什么我从来没有看到它完成?
另一个例子可能是(不完整)
public class TenGreenBottles{
public void knockOneDown(){
bottles--;
round++;
}
}
这会更改对象状态,暴露给用户,并且不带任何参数。这是允许的吗?这种方法是否有一个名称,该方法在更改状态且不带任何参数的实例上执行设定任务?
谢谢
最佳答案
对我来说,这很大程度上取决于选择能够清楚传达突变概念的好名字。命名是编程中最难的问题之一。
我可以理解一些无参数的更改器(mutator),例如
collection.sort();
collection.removeAll();
condition.invert();
editorState.undoLastAction();
textWriter.newLine();
另一方面,doSomething()
对我来说是一个令人困惑的更改器(mutator)名称:它表明预期会产生副作用,但没有描述内部更改(如果有)。
关于java - 没有参数的更改器(mutator),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27569874/