我见过许多第三方代码片段,其中使用了某些条件null==instance
,而不是像instance==null
那样if(null== connection)
。
只是很好奇,这种方法对条件语句或人们的影响是否真的很酷?
答案 0 :(得分:6)
我听到引用它的最常见原因是:
null
。我强烈反对前者,因为“聪明”很容易在任何代码库中变得“难以维护”。后者有效,但我认为体面的测试覆盖可以完成相同的任务,具有更多的附加价值。
就我个人而言,我并不关心这种风格,因为它没有正确读取。一般来说,我喜欢“阅读像散文”的代码,以便于遵循。并考虑两个散文声明:
前者对我来说听起来更自然。
答案 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。