为了账号安全,请及时绑定邮箱和手机立即绑定

检查空-什么顺序?

/ 猿问

检查空-什么顺序?

UYOU 2019-12-06 11:13:33

在检查null时,我使用以下方法:


String str;


if(str == null){

    //...

}

但我也看到了这一点:


if(null == str){

    //...

}

使用一个相对于另一个有什么优势吗?还是只是为了提高可读性?


查看完整描述

3 回答

?
汪汪一只猫

第二个版本(null == str)称为yoda条件

它们都导致相同的行为,但是第二个优点是:当您忘记一个变量时,它可以防止您意外地更改变量=。在这种情况下,编译器将在该行返回错误,并且您不会再遇到一些奇怪的代码行为和调试结果。


查看完整回答
反对 回复 2019-12-06
?
守着星空守着你

该null == x约定通常在熟悉C的人的代码中找到,其中赋值也可以是表达式。一些C程序员写代码像这样这样,如果他们错过了=在


if (NULL == ptr)...

由于NULL = ptr不是有效的分配,因此代码不会编译。尽管现代的C编译器使这种约定过时了,但是这可以防止在代码库中引入相当偷偷摸摸的错误,只要人们注意启用和读取生成的警告即可。


这种编码风格在Java中从未有过任何用处,在Java中,引用分配不能用作布尔表达式。它甚至可以被认为违反直觉。大多数人会以自然语言说“如果X为null ...”或“如果X等于17 ...”,而不是“如果null等于X ...”。


查看完整回答
反对 回复 2019-12-06
?
桃花长相依

正如您所说的,可读性是最重要的原因。大声读出来,(null == str)读得不好。这几乎就像从右到左阅读。(str == null)读起来更好。


另外,我认为需要考虑以下几点:


if (str != null)  

if (str == null)


if (null != str)

if (null == str)

我希望以相同的方式写出正数(str == null)和负数,这是我更喜欢顶集的另一个原因。


查看完整回答
反对 回复 2019-12-06

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信