有些人,通常是那些来自 C 背景的人,他们的测试代码null
如下:
if (null == someVar)
相信“正常”的风格
if (someVar == null)
可能不小心被编码为
if (someVar = null)
这会无意中分配a而null
不是test。null
但是,如果发生错误编码,例如if (someVar = null)
:
- 为了编译,唯一的类型
someVar
可以是Boolean
- 如果它编译并被执行,它会抛出一个
NullPointerException
为什么这些人没有意识到“防御”(即螺旋球)风格根本没有帮助,因为错误编码要么无法编译,要么无法运行!?
顺便说一句,就性能而言,编码if (null == someVar)
实际上执行起来稍微慢一些——准确地说是一条指令更慢。原因是null
必须将其压入堆栈进行比较,而“正常”样式使用特殊的“is null”指令。
我知道...这不是一个问题。更多的是吐槽。但我想把它放在那里。如果您也认为他们“缺乏洞察力”,请投票。
但是,如果您知道答案,我想听听。