3 回答

汪汪一只猫
TA贡献1898条经验 获得超8个赞
第二个版本(null == str
)称为yoda条件。
它们都导致相同的行为,但是第二个优点是:当您忘记一个变量时,它可以防止您意外地更改变量=
。在这种情况下,编译器将在该行返回错误,并且您不会再遇到一些奇怪的代码行为和调试结果。

守着星空守着你
TA贡献1799条经验 获得超8个赞
该null == x约定通常在熟悉C的人的代码中找到,其中赋值也可以是表达式。一些C程序员写代码像这样这样,如果他们错过了=在
if (NULL == ptr)...
由于NULL = ptr不是有效的分配,因此代码不会编译。尽管现代的C编译器使这种约定过时了,但是这可以防止在代码库中引入相当偷偷摸摸的错误,只要人们注意启用和读取生成的警告即可。
这种编码风格在Java中从未有过任何用处,在Java中,引用分配不能用作布尔表达式。它甚至可以被认为违反直觉。大多数人会以自然语言说“如果X为null ...”或“如果X等于17 ...”,而不是“如果null等于X ...”。

桃花长相依
TA贡献1860条经验 获得超8个赞
正如您所说的,可读性是最重要的原因。大声读出来,(null == str)读得不好。这几乎就像从右到左阅读。(str == null)读起来更好。
另外,我认为需要考虑以下几点:
if (str != null)
if (str == null)
与
if (null != str)
if (null == str)
我希望以相同的方式写出正数(str == null)和负数,这是我更喜欢顶集的另一个原因。
添加回答
举报
0/150
提交
取消