文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
条件语句中参数的顺序
下面的两段代码哪个更易读?
还是
对大多数程序员来讲,第一段更易读。那么,下面的两段呢?
还是
仍然是第一段更易读。可为什么会这样?通用的规则是什么?你怎么才能决定是写成a<b好一些,还是写成b>a好一些?
下面的这条指导原则很有帮助:
这条指导原则和英语的用法一致[1]。我们会很自然地说:“如果你的年收入至少是10万美元”或者“如果你不小于18岁。”而“如果18岁小于或等于你的年龄”这样的说法却很少见。
这也解释了为什么while(bytes_received<bytes_expected)有更好的可读性。bytes_received是我们在检查的值,并且在循环的执行中它在增长。当用来做比较时,byte_expected则是更“稳定”的那个值。
“尤达表示法”:还有用吗?
在有些语言中(包括C和C++,但不包括Java),可以把赋值操作放在if条件中:
这极有可能是个bug,程序员本来的意图是:
为了避免这样的bug,很多程序员把参数的顺序调换一下:
这样,如果把==误写为=,那么表达式if(NULL=obj)连编译也通不过。
遗憾的是,这种顺序的改变使得代码读起来很不自然(就像电影《星球大战》里的尤达大师的语气:“除非对此有话可说之于我”)。庆幸的是,现代编译器对if(obj=NULL)这样的代码会给出警告,因此“尤达表示法”是已经过时的事情了。
[1]当然,和中文的习惯也a一致。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论