高级开发人员的建议:停止使用隐含的“else”


我认为有一种趋势——至少在初级开发人员中——认为代码越短越好。但情况并非总是如此。


我认为有一种趋势——至少在初级开发人员中——认为代码越短越好。(在我之后重复:更短并不总是更好。)我当然会成为这种思路的牺牲品,即使我知道这是错误的。这就是为什么当我发现它时,我认为隐含else是自切片面包以来最好的东西。

直到一位高级开发人员对我进行了其他教育。

高级开发人员的建议:停止使用隐含的“else”

本·怀特在Unsplash上拍摄。这是我被吓坏了。

这是什么隐含的 ' else'?

如果您已经熟悉该概念,请跳至下一部分。对于其他所有人:

使用隐式elsewithif语句利用了return语句结束函数执行这一事实。在某些情况下,这可以让我们消除else语句,从而缩短代码。

看看下面的玩具giveMeFood功能giveMeFoodImplicit。从技术上讲,我们不需要 an,else因为如果你给我吃巧克力(只是说),该函数会提前返回'yum'并停止执行。如果你没有,那么它会返回'no Thanks'

两个函数——一个带有显式“else”,一个带有隐式“else”

事实上,我可以添加更多if...return语句来代替if...else,最后添加一个默认值return!看起来更干净,不是吗?这是否意味着我们可以else永远吻别?

使用 if...return 代替 if...else

为什么以及何时避免隐含'else'

肯定有使用隐式的场合else,但这是高级开发人员向我建议的:

  1. Elses 有助于使您的条件句保持明确,以便其他人(包括您未来的自己)可扩展并易于理解它们。
  2. 如果传入的参数不是您的函数不是为处理而构建的,您可以使用 finalelse作为包罗万象的方法或处理错误。

这是一个例子来说明他的意思。

假设我们有一个函数可以检查用户选择的国家,并返回一个拨号代码。目前,checkCountryCode仅用于处理"United States"和"United Kingdom"作为参数。else使用隐式完全省略第二个条件并缩短代码是很诱人的。

checkCountryCode 函数最初仅用于处理两个输入,因此很想使用隐式 else

如果我们以后想要扩展该功能以处理更多国家(例如乌拉圭和乌兹别克斯坦),就会出现问题。很容易忘记或混淆隐式return应该处理的内容(在这种情况下,+44如果输入是,它应该返回"United Kingdom")!

当我们开始扩展函数以处理更多国家/地区时,很容易忘记隐含的 else 应该处理什么条件!

现在这是用显式elses 重写的代码。它肯定会更长,但现在如果有人经过我们尚未考虑的国家/地区,则会引发错误——如果此函数嵌套在更大的代码库中,这将特别有用。

这个实现看起来有点冗长,但它更具可读性,因此更容易扩展

是的,你可以在没有 final 的情况下抛出错误else,但这是我们需要问自己的基本问题:

省略elses left, right 和 center真的让我的代码更容易理解吗?如果有一堆if...returns然后throw在底部突然出现一个声明,其他人会很直观地阅读吗?

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章