类构造函数是设置变量默认值的最佳位置吗?
在我继承的大多数代码中似乎都是这种情况。
例子
public class foo
{
public bool IsAcidic { get; set; }
public foo()
{
IsAcidic = false;
}
}
你会这样做吗?
如果您想为该特定对象的任何实例分配一些默认值,那么是的,构造函数是为它们分配默认值的最合适的地方,但是如果您想将类型的默认值分配给该字段,那么您不需要必须做任何事情。字段将在构造函数之前使用类型的默认值进行初始化。例如,如果您有一个int
类型字段,它将0
默认分配,您不必在构造函数中执行任何操作。
您应该将变量设置为尽可能接近创建该变量的值(显式或隐式)。
这就是 C99(作为一个例子)开始大放异彩的地方。在那之前,您必须在函数的开头创建变量,即使您当时可能不知道它们应该是什么。通过这种脱节,更难跟踪哪些变量被设置为哪些值。当 C99 引入了在函数中创建新变量的能力时,这种脱节就消失了。
因此,对于您的示例,最好在构造函数中设置默认值,因为这是变量存在的地方。
如果您不在构造函数中执行此操作(例如,在init
方法调用中执行),那么这不是默认值,仅仅是因为有时这些变量被设置为其他值。