1

首先是一些示例代码:

public class MyClass {
  List<MyObject> list = new ArrayList<MyObject>();

  public MyClass(MyObject something) {
     getStuff(something ,list)
  }

  private void getStuff(MyObject obj, List<MyObject> list) {
    //do something here and mutate the list
    list.add(MyObject);
  }
}

这种私有方法不受欢迎,因为它会改变列表,但我不明白为什么?我知道这样做的其他方法,但我只是想知道为什么这是坏的/错误的。

4

1 回答 1

7

我认为这是错误的一件事是它违反了最小惊讶原则。您有一个名为getStuff返回 void 而不是返回... something的方法。它还改变了你的类的内部状态,这是令人惊讶的行为。我希望一个名为的方法getStuff可能会返回该列表。

另外,这一行:

list.add(MyObject);

应该:

list.add(obj);

如果有什么。您需要添加实例,而不是类。

于 2013-10-09T21:58:29.817 回答