4

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

if(null != Object)

而不是Objectnull比较

Object != null

如果使用前一种方法可能会出现什么问题?

那合法吗?如果不是,那么为什么编译器会接受它?

4

6 回答 6

14

两者都是等价的,但这null != object是一种古老的语言实践,在这些语言中,写入if (object = null)并意外地将 null 分配给对象是有效的。阻止这起事故的发生是一个守卫。

于 2012-04-20T10:49:54.097 回答
6

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

我听到的最好的论点null != object是避免不良表达。例如捡起一个错字if (var == 1)

if (var = 1) // this is valid C
if (1 = var) // this is not valid C
于 2012-04-20T10:48:26.953 回答
6

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

于 2012-04-20T10:49:33.537 回答
2

这只是可读性的问题。如果你能大声朗读你的代码并且它是有意义的,那么它更容易理解。第二个版本就像 Yoda-talk.. “null is not the object..” 与“The object is not null”..

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

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

于 2012-04-20T10:51:00.063 回答
0

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

于 2012-04-20T10:45:07.210 回答
0

!=运算符的行为与相等运算符的测试一样==

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

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

于 2012-04-20T10:49:16.357 回答