|
|
1
24
考虑长期维护。
未来的维护者可能来自不同的背景。这真的不是关于什么是“正确的”,而是从长远来看什么是最容易的。 |
|
|
2
13
你总是可以安全地假设平台以平台的方式工作。这个。NET平台将所有字段初始化为默认值。如果您看到一个字段未被代码初始化,则表示该字段已被CLR初始化,而不是未初始化。 这种担忧适用于不保证初始化的平台,但在这里则不然。在。NET,更常表示开发人员的无知,认为初始化是必要的。
我从那些应该更了解的人身上看到了这一点。 |
|
|
3
4
在C#中,没有开销,因为值无论如何都是初始化的。在C/C++中,未初始化的值将包含垃圾/未知值(内存位置中的任何值),因此初始化更重要。 |
|
|
4
4
我认为,如果这真的有助于使代码更易于理解,那么就应该这样做。
但我认为这是所有语言功能的一个普遍问题。我对此的看法是:
如果这是该语言的官方特征,你可以使用它。
(当然,有些反功能应该谨慎使用或完全避免,比如缺失
有一段时间,我非常多疑,添加了各种不必要的初始化、显式强制转换、偏执狂的try finally块。..我甚至想过忽略自动装箱,用显式类型转换替换所有出现的情况,只是“为了安全起见”。 问题是:没有尽头。 你可以避免几乎所有的语言功能,因为你不想信任它们。
|
|
|
5
2
我同意你的看法;它可能很冗长,但我喜欢看:
现在,我总是初始化字符串:
|
|
|
6
1
如果我不能立即将其设置为有用的东西
我将把它设置为0。这更多的是为了避免考虑否则的价值。对我来说,整数总是设置为0的事实并不在我的指尖,所以当我看到
对于那些拥有现成知识的人来说,他们会遇到
并想知道为什么那个人会把它设置为零,而编译器只会为他们做这件事。这种想法会打断他们的思考过程。
|
|
|
7
1
另一方面,类范围的变量应该始终初始化。过去,我们为常见变量类型定义了系统范围内的自定义“null”值。这样,我们总是可以知道哪些是错误未初始化的,哪些是故意初始化的。 |
|
|
8
1
我总是在构造函数中显式初始化字段。对我来说,这是做这件事的地方。 |
|
|
9
0
在较旧且未更改的语言中,期望值是未知的。来自这些语言的程序员保留了这种期望。 几乎所有现代或托管语言都为最近创建的变量定义了值,无论是来自类构造函数还是语言特性。
|
|
|
10
0
你应该这样做,没有必要,但最好这样做,因为你永远不知道你使用的语言是否初始化了值。通过自己做,您可以确保您的值已初始化并设置了标准的预定义值。 做这件事没有什么错,也许只是浪费了一点时间。我强烈推荐它。虽然约翰的赞扬很有启发性,但就一般用途而言,最好走安全的道路。 |
|
|
11
0
我通常对字符串这样做,在某些情况下,我不想让null四处浮动。 我工作的普遍共识是“不要对值类型明确地这样做。” |
|
|
12
0
|
|
|
13
0
在C和C++中,最佳实践是 初始化您的值。在某些情况下,这将为您完成,例如静态全局变量,但使用大多数编译器冗余初始化这些值不应该对性能产生任何影响。 |
|
|
14
0
我不会初始化它们。如果你把声明尽可能靠近第一次使用,那么就不应该有任何混淆。 |
|
|
15
0
另一件要记住的事情是,如果你要使用自动属性,你必须依赖隐式值,比如:
|
|
|
16
0
|
|
|
17
0
如果一个字段经常有新的值存储在其中,而不考虑以前的值,并且如果它应该表现得好像一个零最初存储在那里,但零没有什么“特殊”之处,那么该值应该显式存储。 如果该字段表示一个计数或总计,它永远不会直接写入非零值,而是总是添加或减去其他金额,那么零应该被视为“空”值,因此不需要明确说明。 要使用粗略的类比,请考虑以下两个条件:
在前一种情况下,与文字零进行比较是有意义的,因为它检查的是一个在语义上与其他任何位置都没有区别的位置。然而,在第二种情况下,我建议与文字零的比较不会增加可读性,因为代码并不真正关心表达式的值是否
我不知道有哪种编程语言提供了区分“零”和“空”数值的单独方法,除了在表示空时不要求使用文字零。 |