什么是错与空空与对象进行比较,而不是一个对象(What is wrong in comparing

2019-09-16 16:10发布

我刚刚发现我可以比较nullObject这样的,

if(null != Object)

而不是比较Objectnull ,像

Object != null

如果采用前一种方法有什么可以去错了吗?

那是合法的吗? 如果没有,那么为什么编译器接受呢?

Answer 1:

有一件事错了 - 可读性。 如果你想写一个干净的代码,你应该关心它会在未来的阅读方式。 它必须是显而易见的,它做什么,以及为什么它做某一件事。 如果将“对象”来评价的权利,它变得越来越明显哦,你真正做的事情。 嗯,至少在我看来...



Answer 2:

两者都是等价的,但null != object是从语言的旧的做法,即它是有效的写if (object = null)和意外null分配对象。 这是一个后卫​​阻止这种情况发生的事故。



Answer 3:

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

我听过的最好论据null != object是避免不良表情。 例如以拾取一个错字在if (var == 1)

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


Answer 4:

这只是一个可读性的问题。 如果你能读出你的代码响亮,它是有道理的,更容易理解。 第二个版本是像尤达大师对话。“null是不是对象。”比较“的对象不为空” ..

这同样适用于给你的变量和方法的好名字。

一个很好的参考网站写可读的代码: http://www.cleancoders.com/



Answer 5:

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



Answer 6:

!=操作行为只是作为测试是否相等操作==

忽略了表达任何副作用则( expr1 != expr2 )和( expr2 != expr1 )是完全一样的。

如果对象是一个变量(或常量),然后( null != Object )是一样有效的(虽然有点少读)。



文章来源: What is wrong in comparing a null with an object rather than an object with a null