代码中减少else分支_停止在代码中使用'else'关键字

代码中减少else分支

几乎每种编程语言都内置有if-else关键字,并且简单的条件逻辑对任何人来说都很容易理解。 如果您是一名程序员,则知道else关键字。 但是,如果您是一名优秀的程序员,请不要使用此关键字。 我在启动时遇到的最大错误之一是在编写条件语句时过度使用了else关键字。 从5年前开始,我就停止在程序中使用此关键字。 让我解释!

为什么?

考虑一下其他含义,它的意思是“如果是A,那么这个,如果不是A,那么那个;”。 如果A为二进制,这不是问题-问题空间只有2种情况。 但是,如果A是二进制变量的组合或包含更大的变量,则您的负面问题空间可能会出乎意料地大,并且难以理解,测试和维护。

为了避免if / else if,仅使用if语句,要花一些时间来确保if组的输入条件互斥,以使答案不依赖于执行顺序。

  • 它提升了主要执行通道,并带有一些特殊情况。
  • 它迫使我们在每个函数的开始处编写处理数据所需的所有条件。
  • 使用switch-case语句。
  • 使用多态处理复杂的条件情况,使代码更清晰,如State Pattern

例子

我们的示例是一个交通灯(即TrafficLight对象),具有3个不同的状态:红色,黄色和绿色,每个状态都有自己的一组规则。 规则如下:

  • 假设交通信号灯为红色。
  • 延迟后,红色状态变为绿色状态。
  • 然后,在另一个延迟之后,绿色状态变为黄色状态。
  • 短暂延迟后,黄色状态将变为红色。
  • 等等。

不要使用if-else关键字

简单的方法

我们仅删除else关键字并重写所有条件。

或者我们可以使用开关代替if-else。 当您必须合并箱子时,开关看起来更干净。 如果不然就会很快失去控制。

在许多情况下,switch语句可能比if-else更快。

样式约定是。

  • 将每种情况与开关对齐。
  • 在每种情况下缩进代码。
  • 以清楚的结尾结束每个案例。
  • 避免掉线。
  • 以默认值结束切换,以确保即使没有匹配的情况也总是有理智的结果。

我们可以使用状态模式来删除这些代码中的所有if-else关键字

在这里,我们引入了许多if-else块/开关语句来保护各种情况。 状态模式¹适合这种情况。 它允许您的对象根据当前状态而有所不同,并且可以定义特定于状态的行为。 在这种模式下,我们开始根据交通信号灯的可能状态进行思考,然后相应地隔离代码。

  • 对于特定于状态的行为,您具有单独的对象。
  • 在交通信号灯中定义的操作将行为委派给当前状态的对象。
  • 国家本身正在触发状态转换。

红绿灯:绿色(1分钟)→黄色(10秒)→红色(1分钟)

它们的输出与以下相同。

这些是错误代码和良好代码的示例。 最后,感谢您的阅读,希望我已经介绍了所有内容。


参考资料

  • [1]埃里希·伽玛(Erich Gamma)和理查德·赫尔姆(Richard Helm)和拉尔夫·约翰逊(Ralph Johnson)和约翰·弗利斯赛德(John Vlissides)。 设计模式:可重用的面向对象软件的元素 。 Addison-Wesley Professional,1994年。

先前发布在 https://medium.com/javascript-in-plain-english/stop-using-the-else-keyword-in-your-code-907e82b3054a

翻译自: https://hackernoon.com/stop-using-the-else-keyword-in-your-code-9m7x3y97

代码中减少else分支

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值