用多态替换 if:把流程判断变成对象职责
副标题 / 摘要 大量 if 判断会让代码难以维护。本文通过职责拆分与多态消除条件分支。 目标读者 需要重构遗留代码的工程师 关注可维护性的团队 学习设计原则的开发者 背景 / 动机 if 分支常常是“规则塞在一起”的信号。 当规则变化时,分支会持续膨胀。 核心概念 职责拆分:让对象承担自己的规则 多态:用对象替代条件判断 空对象:避免 null 判断 实践指南 / 步骤 识别 if 判断的业务规则 为规则创建对象或策略 用空对象替代 null 分支 把规则拆成可测试单元 可运行示例 class Foo: def do(self, file): return f"process {file}" class NullFoo(Foo): def do(self, file): return "" def get_foo(repo, key): return repo.get(key, NullFoo()) if __name__ == "__main__": repo = {"a.xml": Foo()} foo = get_foo(repo, "a.xml") print(foo.do("a.xml")) 解释与原理 把“有/无对象”的判断交给对象本身(Null Object), 可减少 if 分支并提升可读性。 ...