依赖于默认字段初始化 - 编程风格不好吗?[已关闭]

2022-09-02 09:14:57

我得到了一个指向官方oracle文档的链接:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

其中说:

默认值

声明字段时并不总是需要赋值。已声明但未初始化的字段将由编译器设置为合理的默认值。一般来说,此默认值将为零或 null,具体取决于数据类型。但是,依赖这些默认值通常被认为是糟糕的编程风格。

我想强调这一部分:

但是,依赖这些默认值通常被认为是糟糕的编程风格。

但是,哦,男孩,我想说,这是语言规范的基本部分,知道实例变量具有默认值。为什么这是一个糟糕的编程实践,如果它甚至在Java SE库源代码中被广泛使用?


答案 1

简单:依赖默认值不会传达意图。

您是真的希望该字段以 0 开头,还是忘记赋值?!

当然,空引用是遇到空点异常所需的两件事的一半。

最后,使用默认值意味着您具有非最终字段。尽可能避免。

唯一的反驳论点是:为什么要写下你不必写的东西?但我认为列出的缺点是,因此将0显式分配给字段比将其留给编译器更好。


答案 2

为什么这是一个糟糕的编程实践

这个想法是,如果你依赖于一个默认值,那么如果你故意把它作为默认值,或者你只是忘记分配它,那么任何阅读代码的人都不会立即清楚。

...如果它甚至在Java SE库源代码中被广泛使用??

Java源代码并不是你应该依赖的作为示例性编码实践的例子。在许多情况下,这些规则被违反(有时是为了小的性能改进而故意的,有时是偶然的,或者因为多年来公认的风格发生了变化。


推荐