null == instance而不是instance == null

时间:2014-03-24 12:43:40

标签: java

我见过许多第三方代码片段,其中使用了某些条件null==instance,而不是像instance==null那样if(null== connection)

只是很好奇,这种方法对条件语句或人们的影响是否真的很酷?

4 个答案:

答案 0 :(得分:6)

我听到引用它的最常见原因是:

  1. 这很聪明,很酷。
  2. 它有助于防止分配与比较错误,因为您无法分配到null
  3. 我强烈反对前者,因为“聪明”很容易在任何代码库中变得“难以维护”。后者有效,但我认为体面的测试覆盖可以完成相同的任务,具有更多的附加价值。

    就我个人而言,我并不关心这种风格,因为它没有正确读取。一般来说,我喜欢“阅读像散文”的代码,以便于遵循。并考虑两个散文声明:

    1. 该对象为空。
    2. 空是对象。
    3. 前者对我来说听起来更自然。

答案 1 :(得分:5)

不,没有任何区别。

这只是一个代码样式,在某些情况下可能会对某些人有用,当null立即表现为条件语句中的第一个值时,会使其更明确。< / p>

同时想象一下&#34;实例&#34;可能不仅仅是一个类型的实例,而是一些表达式,比如(()=> { .... })。在这种情况下,你需要先看一个表达式到最后,看看条件是什么,而不是你在第一时间看到条件。

答案 2 :(得分:5)

我认为它来自C / C ++,你可能会在没有编译器注意的情况下意外地分配一个值:

if(variable = 0) { ... }

这不会导致错误,条件始终为false,并且变量分配为0。 所以人们开始严格使用另一种形式:

if(0 = variable) { ... } 

导致错误,因为0无法赋值。

符号if(null == variable)可能足够可读,但if(b == a) b是常数是变量呢?在这种情况下,可读性是一个问题。

答案 3 :(得分:4)

没有区别,除非您输入错误并执行=而不是==编译器会抱怨,因为您无法指定为null。