在下面的代码中删除构造函数中的初始化语句更好吗?
class Dog {
private String name;
private Type type;
public Dog() {
this.name = null;
this.type = null;
}
public static Enum Type {
large, medium, small;
}
}
这取决于,在什么意义上更好?
如果您最看重干净的短代码,那么这很好。下面是一个示例:
class Dog {
private String name;
private Type type;
public static enum Type {
large, medium, small;
}
这是有效的,因为未初始化的Object
以 null
开头。此外,不需要指定空构造函数。
如果您重视清晰度,但仍希望代码尽可能简短,那么
class Dog {
private String name = null;
private Type type = null;
public Dog() {}
public static enum Type {
large, medium, small;
}
}
更好,因为其他(经验不足的(开发人员可以清楚地看到值是什么,并且构造函数已明确定义。
在构造函数中初始化常量值也有其自身的好处:
- 将声明与值/逻辑明确分开
- 将来在需要时灵活添加逻辑(可扩展性(
只需评估每种情况的利弊,看看您喜欢什么。唯一的例外是使用现有代码库时;在这种情况下,请遵守惯例/风格指南。
这类问题往往会产生很多意见,这个答案也不例外。以下是我在大学里的表现:
为所有(非最终(变量声明默认值,即使这些变量等于标准值(null、0、...(。原因是现在更容易看到,除非显式定义,否则变量将默认为 null。
所以这将是:
class Dog {
private String name = null;
private Type type = null;
public Dog(){}
public static Enum Type {
large, medium, small;
}
}
请记住,这只是关于干净代码的意见。两者的行为方式完全相同。