在下面的代码中删除构造函数中的初始化语句是否更好?
class Dog {
private String name;
private Type type;
public Dog() {
this.name = null;
this.type = null;
}
public static Enum Type {
large, medium, small;
}
}
答案 0 :(得分:1)
这取决于,在什么意义上更好?
如果你认为短清洁代码高于其他所有代码,那么这很好。这是一个例子:
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;
}
}
更好,因为其他(经验较少的)开发人员可以清楚地看到值是什么,并且构造函数是明确定义的。
在构造函数中初始化常量值也有其自身的好处:
只需评估每种情况的利弊,看看你喜欢什么。唯一的例外是当您使用现有的代码库时;在这种情况下,请遵守惯例/风格指南。
答案 1 :(得分:0)
这类问题往往产生很多意见,这个答案也没有什么不同。以下是我在大学学习的方式:
声明所有(非最终)变量的默认值,即使这些变量等于标准值(null,0,...)。原因是现在更容易看到,除非明确定义,否则变量将默认为null。
那就是:
class Dog {
private String name = null;
private Type type = null;
public Dog(){}
public static Enum Type {
large, medium, small;
}
}
请记住,这只是关于干净代码的意见。两者的行为完全相同。