我有一个类MyClass:

public class MyClass {
  private MyComplexType member1;
}

我必须对member1进行一些非常强烈的初始化。它足以保证需要使用自己的方法(从MyClass构造函数调用)。

我的问题是,以下哪种格式最适合此方法?
private MyComplexType initMyComplexType() {
  MyComplexType result = new MyComplexType();
  // extensive initialization on result...
  return result;
}

这样称呼:
public MyClass() {
  member1 = initMember1();
}


private void initMember1() {
  member1 = new MyComplexType();
  // extensive initialization on member1...
}

这样称呼:
public MyClass() {
  initMember1();
}

私人成员哪种风格更好?为什么?

最佳答案

我选择第一个选项,因为它可以更清楚地表达init方法的目的并显式显示数据流。

更不用说它使init方法中的代码潜在地可重用。如果以后需要初始化另一个变量,则可以再次调用该方法而不必担心副作用。此外,如果另一个变量在另一个类中,则可以轻松地将方法移动到两个地方都可以访问的地方。

沿着这条线,我还将考虑将init方法保留为doExtensiveComplexCalculation之类,以将其与实际成员变量解耦。

10-06 14:48