【发布时间】:2020-02-15 13:28:51
【问题描述】:
我获得了官方 oracle 文档的链接:https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html
在哪里说:
默认值
并不总是需要赋值 字段被声明。已声明但未初始化的字段将 由编译器设置为合理的默认值。通常来说,一般来说, 此默认值将为零或空,具体取决于数据类型。依靠 然而,在这样的默认值上,通常被认为是不好的 编程风格。
我想强调这部分:
然而,依赖这样的默认值通常被认为是糟糕的编程风格。
但是,天哪,我想说,这是语言规范的基本部分,知道实例变量具有默认值。如果它甚至在 Java SE 库源代码中被广泛使用,为什么这是一个糟糕的编程实践?
【问题讨论】:
-
嗯。我从来不知道那个声明在那里。我实际上认为依赖它们是一种很好的做法。
private int count = 0;是什么都不做的代码,什么也不做的代码是混乱的。这就像从 java.lang 中导入类,或者用extends Object声明一个类。 -
... 或在接口中有
public abstract方法。 -
公开摘要有什么问题?
-
拼图的一部分可能来自 C++。它是一种流行的语言,它对默认初始化与零初始化的处理是错误的持续来源。在 C++ 中,除了最特殊的情况外,在所有情况下都依赖默认值是一个直接的坏主意。这可能在文化上已经渗入了 Java。
-
@JohnKeates - 我的 Java 有点生疏了,但是接口中的
private方法没有意义,并且隐含了abstract。
标签: java default-value instance-variables