依赖隐式默认值是不好的做法,例如:
class Node
{
int red;
int green;
int blue;
bool grayscale;
Node next;
}
而不是明确地设置它们:
class Node
{
int red = 0;
int green = 0;
int blue = 0;
bool grayscale = false;
Node next = null;
}
答案 0 :(得分:11)
不,我认为依靠默认值是可以的。明确地分配它们只会使代码混乱。此外,它的优点是可以更轻松地区分您为非默认值指定的字段。
答案 1 :(得分:7)
我会一直把它们放进去,因为它证明你已经考虑过这些成员的初始价值应该是什么。
bool isCool;
可能意味着“我知道这在创业时并不酷”,或者只是意味着你没有想到它。
bool isCool = false;
显然是一个慎重的决定。
答案 2 :(得分:3)
我不认为这是一种不好的做法,因为默认值是使用该语言的开发人员应该知道/被迫学习的东西。
唯一的缺点是,不列出默认值可能会导致人们永远不会看到初始值。如果它被初始化为默认值之外的其他东西,可能需要注意一点。
答案 3 :(得分:2)
这主要是主观的,imho。
对我而言,即使它是明确声明的默认值,它也太“罗嗦”了......在阅读代码时,它仍然会让我慢慢减速......让我们面对它......这是多余的。
我也认为代码更频繁,因为人们不知道默认值,或者有一些非理性的担心,他们可能会在C#5.0中将bool的默认值更改为true。
答案 4 :(得分:1)
答案 5 :(得分:1)
作为之前所有答案的替代方法,我用这些初始值放在构造函数中,所以我不打算在它之外寻找变量的初始值。
class Node
{
int red;
int green;
int blue;
bool grayscale;
Node next;
public Node() {
red = 0;
green = 0;
blue = 0;
grayscale = false;
next = null;
}
}
答案 6 :(得分:1)
开发人员有责任了解原始数据类型的默认值,因此它们不是绝对必要的。但是,正如一些人所指出的那样,它确实证明了你已经考虑过这个问题。
此外,代码中的绝大多数变量类型都是您创建的自定义类型。开发人员不负责了解自定义枚举的默认值。良好的沟通要求您在这些情况下指定默认值。由于我们是习惯的生物,因此最好养成始终初始化变量的习惯。只要在方法上保持一致,无论是在类级别还是在构造函数中执行它都没有区别。
答案 7 :(得分:0)
我更喜欢明确地给出值。它试图从内存中加载默认值对大脑的压力较小。最好让他们预先准备好。没有伤害。
像
string name = string.Empty;
或
Guid userID = Guid.Empty;