返回介绍

条件语句中参数的顺序

发布于 2024-08-18 11:54:29 字数 1849 浏览 0 评论 0 收藏 0

下面的两段代码哪个更易读?

还是

对大多数程序员来讲,第一段更易读。那么,下面的两段呢?

还是

仍然是第一段更易读。可为什么会这样?通用的规则是什么?你怎么才能决定是写成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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文