Java构造函数中计算类属性的约定
Java中计算类属性的约定是什么 例如,直接在构造函数中进行计算:Java构造函数中计算类属性的约定,java,constructor,Java,Constructor,Java中计算类属性的约定是什么 例如,直接在构造函数中进行计算: public class Person { public Person(int birthyear){ this.birthyear = birthyear; this.age = 2020 - birthyear; } } 与调用执行计算的方法相比: public class Person { public Person(int birthyear){
public class Person {
public Person(int birthyear){
this.birthyear = birthyear;
this.age = 2020 - birthyear;
}
}
与调用执行计算的方法相比:
public class Person {
public Person(int birthyear){
this.birthyear = birthyear;
this.age = calculateAge(birthyear);
}
}
如果计算比较复杂(不像这里),我倾向于使用第二个示例,但如果可能,我希望遵循约定
这可能是重复的,在这种情况下,请为我指出正确的方向(从搜索中找不到)。实际上没有约定。这取决于计算的复杂性或可读性。 对于一个简单的代码,如<代码> 2020 -出生年份,如果把它放在构造函数中,我会认为它是完全好的。
对于更复杂的情况,我宁愿将其推迟到一种方法但请记住:确保将其设置为私有,否则子类可以访问未完全构造的对象。对于简单复杂的情况,可以调用私有方法。对于复杂的情况,有更多的选择(构建器、工厂方法等等),也许你也感兴趣。