![]() |
1
6
我会选择第一个选项,因为它更清楚地表达了init方法的目的,并显式地显示了数据流。 更不用说它使init方法中的代码具有潜在的可重用性。如果以后需要初始化另一个变量,只需再次调用该方法,而不必担心副作用。此外,如果另一个变量在另一个类中,您可以很容易地将方法移动到两个地方都可以访问的地方。
沿着这条路线,我还将考虑将init方法保留为
|
![]() |
2
4
第二种方法的另一个缺点是,字段member1可能会将部分初始化的MyComplexType暴露给另一个线程。
运行StaticNoOverride会显示“家长在做什么”。 |
![]() |
3
3
只有第一个允许你把结果分配给最后一个成员,这对我来说已经足够了。 |
![]() |
4
3
选择选项1。除了彼得提到的原因,这是一个更好的做法,因为这样你有一个
计算密集但无副作用
功能
开放供扩展
编辑:如其他人所说,也考虑重命名
|
![]() |
5
2
坚强的 对我来说足够了。我将从Java教程中添加一些摘录:
我倾向于使用上面的样式(除非我不希望初始化发生在所有构造函数中,但这是不寻常的)。 |
![]() |
6
1
我更喜欢 Spring IoC container 你所描述的那种复杂的硬编码初始化。它可以更好地分离关注点,并为单元测试提供更好的环境。 |
![]() |
7
1
静止的 |
![]() |
Schadre · C-plus编码错误 2 年前 |
![]() |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
![]() |
amirreza870 · Python OOP-更改类文本 2 年前 |
![]() |
A_K · 使用cat或打印方法打印部分内容的子集闭包 2 年前 |
![]() |
Mo Fatah · 如何使用Python类打印数独板? 2 年前 |