Java类,在类构造函数中设置值的最佳实践是什么?

Java类,在类构造函数中设置值的最佳实践是什么?,java,Java,例如,我有一节课 类别1: public class car{ private Color carColor; public car(Color carColor) { this.carColor = carColor; } public void setColor(Color carColor) { this.carColor = carColor; } } 类别2: public class car{ private Color carColor; pub

例如,我有一节课

类别1:

public class car{
private Color carColor;
public car(Color carColor)
{
    this.carColor = carColor;
}

public void setColor(Color carColor)
{
    this.carColor = carColor;
}
}
类别2:

public class car{
    private Color carColor;
    public car(Color carColor)
    {
        setColor(carColor);
    }

    public void setColor(Color carColor)
    {
        this.carColor = carColor;
    }
}

哪种构造函数是java编码中的最佳实践?为什么?

第一种方法更直观,并且显示得更频繁。i、 e.同样:

public car(Color carColor)
{
    this.carColor = carColor;
}
它更具可读性。但两者都是平等的,所以这是一个风格问题


我也看到了:

Class1我想。Getter和Setter方法通常是必需的,但构造函数的工作是初始化该对象的变量。

如果在设置变量之前我有很多应该对变量进行的计算,我会使用单独的方法,否则,我会选择第一种方法

public car(Color carColor)
{
    setColor(carColor);
}

public void setColor(Color carColor)
{
    Color res;
    //Many calculations
    //..
    //..
    //finally 
    this.carColor = res;
}
但如果我只想设置它,我会很简单:

public car(Color carColor)
{
    this.carColor = carColor;
}

我将使用第一个选项,因为您可以在
setColor()

中进行验证,这两个构造函数在语义上是相同的。最佳实践?我会说没有,随你的便。我通常会尽量避免在构造函数中使用非私有方法,因为它们可以在派生类中重写,并在
super
构造函数中使用,而不是原始方法。遵循java命名约定。这应该是注释而不是答案。@Luigimendoza为什么?这是一个简单的问题,可能需要简单的答案……因为这是一个个人观点,而不是由事实、参考资料或特定专业知识支持的答案。也许你应该在实例化对象时也应用该验证=\(这会引发争论…)