我刚刚发现我可以null
与Object
这样的人进行比较,
if(null != Object)
而不是Object
与null
比较
Object != null
如果使用前一种方法可能会出现什么问题?
那合法吗?如果不是,那么为什么编译器会接受它?
我刚刚发现我可以null
与Object
这样的人进行比较,
if(null != Object)
而不是Object
与null
比较
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 is not the object..” 与“The object is not null”..
这同样适用于给你的变量和方法起个好名字。
编写可读代码的好参考站点:http: //www.cleancoders.com/
这是相同的。这几乎就像说 if 1 != 2
。这是否意味着2 != 1
?
该!=
运算符的行为与相等运算符的测试一样==
。
忽略表达式中的任何副作用 then ( expr1 != expr2
) 和 ( expr2 != expr1
) 完全相同。
如果Object是一个变量(或常量),那么 ( null != Object
) 也同样有效(尽管可读性稍差)。