嗨 在我们公司,他们遵循严格的与空值比较的规则。当我代码 if(variable!= null) in code review我收到此评论后将其更改为if(null!= variable)。上述代码是否有性能问题? 如果有人解释高度赞赏。if(null!=变量)为什么不是if(变量!= null)
在此先感谢
嗨 在我们公司,他们遵循严格的与空值比较的规则。当我代码 if(variable!= null) in code review我收到此评论后将其更改为if(null!= variable)。上述代码是否有性能问题? 如果有人解释高度赞赏。if(null!=变量)为什么不是if(变量!= null)
在此先感谢
这与性能无关。它用于防止您意外指定而不是比较。分配null = var
将没有任何意义。但在Java var = null
也不会编译,所以转换它们的规则不再有意义,只会使代码变得不可读。
没有性能上的差异 - 原因是,如果你习惯了编写(null == somevar)
,而不是(somevar == null)
,那么你将永远不会意外地使用单等号,而不是两个,因为编译器不会允许它,它会允许(somevar = null)
。他们只是将其延伸至!=
以保持一致。
我个人更喜欢(somevar == null)
我自己,但我看到他们来自哪里。
我没有看到遵循这个约定的好处。在C,其中布尔类型不存在,就写
if (5 == variable)
而不是
if (variable == 5)
,因为如果你忘记了eaqual标志之一,你最终
if (variable = 5)
是非常有用的
其中5分配给变量,并总是评估为真。但在Java中,布尔值是一个布尔值。并且!=,根本没有理由。
一个很好的建议,虽然是写
if (CONSTANT.equals(myString))
而不是
if (myString.equals(CONSTANT))
,因为它有助于避免NullPointerException异常。
我的建议是要求为规则的理由。如果没有,为什么要遵循它?它无助于可读性。
这是旧C编码标准的“遗留”。
表达式if (var = null)
可以毫无问题地编译。但它实际上将值null分配给变量,从而做了完全不同的事情。这是C程序中非常烦人的bug的来源。
在Java中,表达式不能编译,因此它比其他任何东西都更传统。它不会有任何目的(除了编码风格偏好)
不应该有任何性能增益或任何方式退化afaik,猜测这只是他们喜欢做什么。 – esaj 2011-02-13 15:45:14
这种编码风格被称为“尤达条件”,如果你搜索它,你会发现很多例子和讨论。 – Cephalopod 2011-02-13 16:24:52
可能的重复http://stackoverflow.com/questions/271561/why-does-one-often-see-null-variable-instead-of-variable-null-in-c – 2011-02-13 16:59:46