返回介绍

滥用短路逻辑

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

在很多编程语言中,布尔操作会做短路计算。例如,语句if(a||b)在a为真时不会计算b。使用这种行为很方便,但有时可能会被滥用以实现复杂逻辑。

下面例子中的语句当初是由某一位作者写的:

用英语来讲,这段代码是在说:“得到key的bucket。如果这个bucket不是空,那么确定它是不是已经被占用。”

尽管它只有一行代码,但是它的确要让大多数程序员停下来想一想才行。现在和下面的代码比一比:

它做的事情完全一样,尽管它有两行代码,但它要容易理解得多。

那么无论如何为什么要把代码写在一个巨大的表达式里呢?在当时,它看上去很智能。把逻辑解析成一小段简明的码段。这可以理解——这就像在猜一个小小的谜,我们都想让工作有乐趣。问题是这种代码对于任何读它的人来讲都是个思维上的减速带。

关键思想

要小心“智能”的小代码段——它们往往在以后会让别人读起来感到困惑。

这是否意味着你应该避免利用这种短路行为?不是的。在很多情况下可以用它达到整洁的目的,例如:

还有一个比较新的习惯用法值得一提:在像Python、JavaScript以及Ruby这样的语言中,"or"操作符会返回其中一个参数(它不会转换成布尔值),所以这样的代码:

可以用来从a、b或c中找出第一个为“真”的值。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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