代码重复比错误的抽象成本更低
开发者们热爱 DRY 原则。
你想避免重复自己。你想要优雅且可重用的代码。
但这个目标往往会导致一个陷阱:过早抽象。
重复代码感觉不对劲。然而,代码重复的成本往往比错误的抽象更低。
我们试图构建完美的模块化系统。我们寻找模式并提取逻辑以管理复杂度。
设计良好的抽象有助于软件扩展。
但许多抽象构建得太早了。如果你没有完全理解问题,你的抽象就会变成一种负担。
错误的抽象会导致以下几个问题:
- 过度设计:你为简单的问题构建了复杂的解决方案。
- 僵化:你的代码变得难以修改,因为它试图预测一个永远不会发生的未来。
- 意图模糊:业务逻辑隐藏在层层通用的接口之下。这使得调试变得困难。
- 紧耦合:系统的某些部分会与抽象本身紧紧绑定。
这种代价是高昂的。你把时间花在与自己的架构作斗争,而不是解决用户的问题。它会拖慢团队的进度,并使重构变得困难。
我并不是在告诉你要复制粘贴一切。我是在建议一种务实的方法。
将受控的重复作为一种工具。在需求变化快或存在不确定性的领域使用它。
在构建抽象之前,请等到你能清晰地看到模式为止。