有什么不对空与对象进行比较,而不是与空
对象我才发现,我可以用Object
这样比较null
,有什么不对空与对象进行比较,而不是与空
if(null != Object)
,而不是null
比较Object
,像
Object != null
如果使用前一种方法会出现什么问题?
这是合法吗?如果不是那么为什么编译器接受它?
有一件事错了 - 可读性。如果你想写一个干净的代码,你应该关心它将来被阅读的方式。它必须是显而易见的,它做了什么以及它为什么做某件事。如果您将“对象”放在评估的右侧,那么您真的在做什么变得不那么明显。嗯,至少在我看来......
这是一样的。这几乎就像是说,如果1 != 2
。这是暗示2 != 1
?
大多数人表示Object != null
,因为这是他们所习惯的方式,所以它更容易阅读。
我听到null != object
最好的反驳是避免不良表情。例如到拾取在if (var == 1)
if (var = 1) // this is valid C
if (1 = var) // this is not valid C
的!=
操作员输入错误的行为就如同试验相等运算==
。
忽略表达式中的任何副作用(expr1 != expr2
)和(expr2 != expr1
)完全相同。
如果对象是一个变量(或恒定),然后(null != Object
)是一样有效的(虽然有点少可读)。
两者是等价的,但null != object
是从语言的旧的做法,即它是有效的写if (object = null)
和意外 null分配对象。这是防止事故发生的后卫。
在Java中,第二个不会编译。 – 2012-04-20 11:15:43
这只是一个可读性问题。如果你可以大声朗读你的代码,这很有意义,它更容易理解。第二个版本是像尤达大师对话。“null是不是对象。”比较“的对象不是空” ..
这同样适用于给你的变量和方法的好名字。
编写可读代码的好参考网站:http://www.cleancoders.com/
你的意思是Yoda-talk,就像在Yoda Syntax中一样? – willDaBeast 2012-04-20 11:29:04
对.. http://jamiethompson.co.uk/web/2010/05/20/yoda-syntax-a-php-design-pattern-for-if-statements/只有它认为为什么,这是一个好主意是...也许如果你的德语.. – barsju 2012-04-20 12:40:43
为什么你期望这不起作用? – 2012-04-20 10:44:00
它没有错,只是一个真正的品味问题。有些人喜欢这个,其他人喜欢object!= null。我个人觉得Object!= null更易于阅读。 – Kell 2012-04-20 10:44:32
如果(NULL!=对象),null作为一个对象与另一个对象进行比较.. 和对比参考是对象 – 2012-04-20 10:48:42