我有一个类 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();
}
对于私有(private) 成员(member),哪种风格更好?为什么?
最佳答案
我会选择第一个选项,因为它更清楚地表达了 init 方法的目的并明确显示了数据流。
更不用说它使 init 方法中的代码有可能被重用。如果稍后需要初始化另一个变量,只需再次调用该方法即可,无需担心副作用。此外,如果另一个变量在另一个类中,您可以轻松地将方法移动到两个地方都可以访问的地方。
沿着这条线,我还会考虑将 init 方法保留为 doExtensiveComplexCalculation
之类的方法,以将其与您的实际成员变量分离。
关于Java 成员初始化模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3186806/