我刚刚发现我可以将
null
与这样的 Object
进行比较,
if(null != Object)
而不是比较
Object
与null
,就像
Object != 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 不是对象..”相比“对象不为 null”..
这同样适用于给你的变量和方法起个好名字。
编写可读代码的一个很好的参考网站:http://www.cleancoders.com/
是一样的。这几乎就像是说如果
1 != 2
。这是不是意味着2 != 1
?
!=
运算符的行为与相等运算符==
的测试相同。
忽略表达式中的任何副作用,则 (
expr1 != expr2
) 和 (expr2 != expr1
) 完全相同。
如果 Object 是变量(或常量),则 (
null != Object
) 同样有效(尽管可读性稍差)。