首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >null==instance而不是instance==null

null==instance而不是instance==null
EN

Stack Overflow用户
提问于 2014-03-24 12:43:39
回答 4查看 466关注 0票数 3

我在许多第三方代码片段中看到,在某些情况下,使用null==instance代替instance==null (如if(null== connection) )。

只是好奇,这种方法对条件语句有什么影响,还是人们使用它很酷?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-03-24 12:45:44

我听到引用的最常见的理由是:

  1. 又聪明又酷。
  2. 它有助于防止赋值和比较错误,因为您不能分配给null

我强烈反对前者,因为“聪明”在任何代码基中都很容易变得“难以维护”。后者是有效的,尽管我认为体面的测试覆盖可以以更高的附加值完成相同的任务。

就我个人而言,我不喜欢这种风格,因为它对我来说不正确。一般来说,我喜欢用代码“读起来像散文”,这样就容易理解了。并考虑两种散文陈述:

  1. 对象是空的。
  2. 空是对象。

对我来说前者听起来更自然。

票数 7
EN

Stack Overflow用户

发布于 2014-03-24 12:44:11

不,没有什么区别。

这只是一种代码样式,在某些情况下可能会吸引一些人,当null立即显示为条件语句中的第一个值时,这会使它更加显式。

另外,想象一下“实例”可能不仅仅是一个类型的实例,而是一些表达式,比如(()=> { .... })。在这种情况下,您需要先读取一个表达式到末尾,然后看什么是条件,而不是首先看到条件。

票数 6
EN

Stack Overflow用户

发布于 2014-03-24 12:48:27

我认为它来自于C/C++,在这种情况下,您可能会在编译器注意到的情况下意外地分配一个值:

代码语言:javascript
复制
if(variable = 0) { ... }

这不会导致错误,并且条件总是为false,并且变量被赋值为0。所以人们开始严格使用另一种形式:

代码语言:javascript
复制
if(0 = variable) { ... } 

这会导致错误,因为0不能被赋值。

if(null == variable)的表示法可能足够可读性,但是if(b == a)是怎样的呢?b是常数是变量。在这种情况下,可读性是一个问题。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22609745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档