您好 在我们公司,他们遵循严格的与空值比较的规则。当我编码 代码审查中的 if(variable!= null)我会对此进行评论,将其更改为 if(null!= variable)。以上代码是否有任何性能损失? 如果有人解释得高度赞赏。
提前致谢
答案 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中,表达式不能编译,因此它更像传统而不是其他任何东西。它没有任何目的(编码风格偏好除外)