没有参数的变异者

时间:2014-12-19 16:16:28

标签: java design-patterns

public void doThings1(){
    this.doSomething();
    this.doSomethingElse();
    this.doThirdThing();
}

public void doThings2(){
    this.doSomethingElse();
    this.doThirdThing();
}

这感觉就像一个非常基本的问题,但0个论点变异者不赞成?我觉得我很少在对象中看到直接以预定义方式直接操作一个或多个对象参数的方法。也许(如上所示)您需要以不同的顺序执行一些可重复的代码部分,因此为每个场景创建方法来封装更精细的方法?如果这被认为是坏的,那么更好的方法是什么,如果没有,为什么我从来没有看到它呢?

另一个例子可能是(不完整)

public class TenGreenBottles{
    public void knockOneDown(){
        bottles--;
        round++;
   }
}

这会更改对象状态,向用户公开,不进行任何参数。这是允许的吗?是否有这种方法的名称,它在更改状态且不参数的实例上执行设置任务?

由于

1 个答案:

答案 0 :(得分:2)

对我来说,这非常关乎选择明确表达突变概念的好名字。命名是编程中最难的问题之一。

我能理解一些没有参数的变异器,例如

collection.sort();
collection.removeAll();
condition.invert();
editorState.undoLastAction();
textWriter.newLine();

另一方面,doSomething()对我来说是一个令人困惑的变异名称:它表明会产生副作用,但不会描述内部变化,如果有的话。