if(null!= variable)为什么不if(variable!= null)

时间:2011-02-13 15:42:42

标签: java coding-style

您好 在我们公司,他们遵循严格的与空值比较的规则。当我编码   代码审查中的 if(variable!= null)我会对此进行评论,将其更改为 if(null!= variable)。以上代码是否有任何性能损失? 如果有人解释得高度赞赏。

提前致谢

4 个答案:

答案 0 :(得分:11)

我认为遵循这一惯例没有任何好处。在C中,布尔类型不存在,编写

很有用
if (5 == variable)

而不是

if (variable == 5)

因为如果你忘记了其中一个等号,你最终会得到

if (variable = 5)

将5赋值给变量并始终求值为true。但在Java中,布尔值是布尔值。有了!=,根本就没有理由。

但是,一个好的建议就是写

if (CONSTANT.equals(myString))

而不是

if (myString.equals(CONSTANT))

因为它有助于避免NullPointerExceptions。

我的建议是要求对该规则进行辩护。如果没有,为什么要遵循它?这对可读性没有帮助。

答案 1 :(得分:3)

这与性能无关。它用于防止您意外分配而不是比较。作业null = var没有任何意义。但是在Java var = null中也不会编译,因此转换它们的规则不再有意义,只会使代码的可读性降低。

答案 2 :(得分:3)

没有性能差异 - 原因是如果您习惯于编写(null == somevar)而不是(somevar == null),那么您将永远不会意外地使用单个等号而不是两个,因为编译器赢了'允许它,允许(somevar = null)。他们只是将其扩展到!=以保持一致。

我个人更喜欢自己(somevar == null),但我知道他们来自哪里。

答案 3 :(得分:3)

这是旧C编码标准的“遗留”。

表达式if (var = null)可以毫无问题地编译。但它实际上会将值null赋给变量,从而做一些完全不同的事情。这是C程序中非常烦人的错误的来源。

在Java中,表达式不能编译,因此它更像传统而不是其他任何东西。它没有任何目的(编码风格偏好除外)