创建可演化的软件架构
在软件开发过程中,需求的变化是不可避免的挑战。为了应对这一挑战,我们需要构建可演化的架构,让软件能够轻松适应变化。下面将详细介绍相关的概念、原则和实践方法。
1. 理解复杂性
复杂性是影响软件可演化性的关键因素。它主要体现在以下三个方面:
- 高依赖性 :软件依赖其他代码的 API 或行为。虽然一定程度的依赖不可避免且有时是必要的,但过度依赖会导致代码难以修改。例如,模块之间的紧密耦合会使一处修改引发多处变动。可以通过精心设计 API 和适度使用抽象来减少紧密耦合和变化放大效应。
- 高模糊性 :程序员难以预测代码更改的副作用、代码的行为以及需要修改的位置。像“上帝对象”、全局状态、过度间接引用和远距离操作等都是高模糊性的表现。使用具有清晰契约的 API 和标准模式可以降低模糊性。
- 高惯性 :软件继续使用的倾向。用于快速实验的代码惯性低,而支撑多个关键业务应用的服务惯性高。对于高惯性、高变化的系统,应进行简化;低惯性或低变化的系统可以保持一定的复杂性。
复杂性无法完全消除,但我们可以选择将其放置的位置。例如,向后兼容的更改可能使代码使用更简单,但实现更复杂;为解耦子系统添加的间接层会减少依赖,但增加模糊性。因此,我们需要谨慎管理复杂性。
2. 可演化性设计原则
2.1 你不会需要它(YAGNI)
YAGNI 原则很简单:不构建不需要的东西。违反该原则通常是因为开发者对代码的某些方面过于兴奋、执着或担忧。预测需求是困难的,错误的猜测会导致精力浪费,
超级会员免费看
订阅专栏 解锁全文
1284

被折叠的 条评论
为什么被折叠?



