发布于 2026-01-06 0 阅读
0

如何消除 if-else 链,以延长软件寿命

如何消除 if-else 链,以延长软件寿命

动机

从面向对象编程到函数式编程,从SOLID原则、DRY原则、YAGNI原则、KISS原则到设计模式,所有编程原则和范式都旨在提高代码的可读性和可维护性,所有这些原则和范式的主要目的都是为了编写简洁、易于维护的代码,从而实现软件的长期生命周期。因为软件本质上会不断发展和变化,所以所有这些概念都有助于我们使软件灵活且易于修改。

提高可读性和可维护性

最常见的代码异味之一是 if-else 链或代码分支,当然,没有 if-else 就无法开发软件,但大量使用会损害你的代码,为了消除/减少多个 if-else 链,你可以采取一些策略来避免这种代码异味。

早期失败机制

该机制的工作原理是先验证违规情况,如果发生违规则终止,而不是像下面这样先检查值是否正确再终止。

图片描述

扁平链机构

这种机制通过在 if 语句中重复条件来避免代码分支,这种方法优先考虑代码的可读性而非性能,尤其适用于将来可能需要频繁修改的代码。

图片描述

利用多态性

如果您有多个操作,并且需要根据特定条件触发特定操作,您可以将这些操作的创建封装到一个单独的类(工厂)中,并将确定哪些操作符合此条件委托到一个隔离的地方,从而使您的代码更易读,并且使代码严格遵循开闭原则。

图片描述

谓词-作用机制

你可以使用映射或键值对列表来实现这种机制,其中一端是谓词(条件),另一端是谓词满足时要执行的操作。通过遍历这些键值对,你可以更好地实现条件逻辑。

图片描述

使用状态设计模式

首先,您需要按如下方式定义您的状态。

图片描述

然后实现每个状态,以及当前状态和允许从当前状态返回的状态。

图片描述

图片描述

然后将这些状态与你的对象一起使用。

图片描述

所有战术的演示项目

如果你喜欢这篇文章,可以请我喝杯咖啡,提前感谢!

请我喝杯咖啡

文章来源:https://dev.to/smuhammed/how-to-eliminate-if-else-chain-for-long-life-software-3ea3