将null与对象而不是具有null的对象进行比较有什么问题

我刚刚发现我可以将null与这样的Object进行比较,

if(null != Object)

而不是将Objectnull进行比较,例如

 Object != null 

如果使用前一种方法可能会出错?

这合法吗? 如果没有,那么为什么编译器接受它?

这有一点是错的 – 可读性。 如果你想编写一个干净的代码,你应该关心它将来的阅读方式。 它需要是显而易见的,它做什么以及为什么它做某件事。 如果将“对象”放在评估的右侧,那么你真正在做什么就变得不那么明显了。 至少在我看来……

两者都是等价的,但是null != object是一种古老的做法,它是有效的写入if (object = null)并且意外地将null赋给对象。 这是一个阻止这次事故发生的警卫。

大多数人都说Object != null因为它是他们习惯的,所以它更容易阅读。

我听过的最好的参数是null != object是为了避免错误的表达。 例如,在if (var == 1)拾取拼写错误

 if (var = 1) // this is valid C if (1 = var) // this is not valid C 

这只是一个可读性的问题。 如果你可以大声读出你的代码,那么它就更容易理解。 第二个版本就像Yoda-talk ..“null不是对象..”比较“对象不为空”。

这同样适用于为变量和方法提供良好的名称。

用于编写可读代码的良好参考站点: http : //www.cleancoders.com/

这是相同的。 这几乎就像说1 != 2 。 这意味着2 != 1

!=运算符的行为与对等于运算符==的测试相同。

忽略表达式中的任何副作用( expr1 != expr2 )和( expr2 != expr1 )完全相同。

如果Object是一个变量(或常量),则( null != Object )同样有效(尽管可读性稍差)。