将 null 与对象进行比较而不是将对象与 null 进行比较有什么问题

问题描述 投票:0回答:5

我刚刚发现我可以将

null
与这样的
Object
进行比较,

if(null != Object)

而不是比较

Object
null
,就像

Object != null

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

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

java c# null
5个回答
6
投票

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


6
投票

大多数人说

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

我听过的关于

null != object
的最好论点是避免不良表达。例如拾取
if (var == 1)

中的拼写错误
if (var = 1) // this is valid C
if (1 = var) // this is not valid C

2
投票

这只是可读性的问题。如果您可以大声朗读代码并且它有意义,那么就更容易理解。第二个版本就像 Yoda-talk..“null 不是对象..”相比“对象不为 null”..

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

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


0
投票

是一样的。这几乎就像是说如果

1 != 2
。这是不是意味着
2 != 1


0
投票

!=
运算符的行为与相等运算符
==
的测试相同。

忽略表达式中的任何副作用,则 (

expr1 != expr2
) 和 (
expr2 != expr1
) 完全相同。

如果 Object 是变量(或常量),则 (

null != Object
) 同样有效(尽管可读性稍差)。

© www.soinside.com 2019 - 2024. All rights reserved.