null==instance instead of instance==null

  • 本文关键字:null instance of instead java
  • 更新时间 :
  • 英文 :


我看到许多第三方代码片段在某些情况下使用null==instance而不是if(null== connection)instance==null

只是好奇,这种方法对条件语句有什么影响吗?或者人们只是很酷地使用它?

我听到的使用这个的最常见的原因是:

    这是聪明和酷。
  1. 它有助于防止分配和比较错误,因为你不能分配给null

我强烈反对前者,因为"聪明"在任何代码库中都很容易变得"难以维护"。后者是有效的,尽管我认为体面的测试覆盖可以用更多的附加价值完成相同的任务。

我个人不喜欢这种风格,因为它不适合我阅读。一般来说,我喜欢让代码"读起来像散文一样",以便易于理解。考虑两个散文语句:

  1. 对象为空
  2. 对象为空。

不,没有任何区别。

这只是一个代码风格,在某些情况下可能对某些人有用,当null立即表现为条件语句中的第一个值时,使其更显式

还要想象一下,如果"instance"出现的不仅仅是一个类型的实例,而是某个表达式,比如(()=> { .... })。在这种情况下,你需要先把一个表达式读到最后,在看到什么是条件之后,你首先看到的是条件。

我认为它来自于C/c++,在那里你可能不小心赋值而编译器不会注意到:

if(variable = 0) { ... }

这不会导致错误,条件始终为false,变量赋值为0。于是人们开始严格使用另一种形式:

if(0 = variable) { ... } 

导致错误,因为0不能赋值。

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

没有区别,除非您输入错误并执行=而不是==,编译器会报错,因为您无法分配给null

最新更新