18、创建可演化的软件架构

创建可演化的软件架构

在软件开发过程中,需求的变化是不可避免的挑战。为了应对这一挑战,我们需要构建可演化的架构,让软件能够轻松适应变化。下面将详细介绍相关的概念、原则和实践方法。

1. 理解复杂性

复杂性是影响软件可演化性的关键因素。它主要体现在以下三个方面:
- 高依赖性 :软件依赖其他代码的 API 或行为。虽然一定程度的依赖不可避免且有时是必要的,但过度依赖会导致代码难以修改。例如,模块之间的紧密耦合会使一处修改引发多处变动。可以通过精心设计 API 和适度使用抽象来减少紧密耦合和变化放大效应。
- 高模糊性 :程序员难以预测代码更改的副作用、代码的行为以及需要修改的位置。像“上帝对象”、全局状态、过度间接引用和远距离操作等都是高模糊性的表现。使用具有清晰契约的 API 和标准模式可以降低模糊性。
- 高惯性 :软件继续使用的倾向。用于快速实验的代码惯性低,而支撑多个关键业务应用的服务惯性高。对于高惯性、高变化的系统,应进行简化;低惯性或低变化的系统可以保持一定的复杂性。

复杂性无法完全消除,但我们可以选择将其放置的位置。例如,向后兼容的更改可能使代码使用更简单,但实现更复杂;为解耦子系统添加的间接层会减少依赖,但增加模糊性。因此,我们需要谨慎管理复杂性。

2. 可演化性设计原则

2.1 你不会需要它(YAGNI)

YAGNI 原则很简单:不构建不需要的东西。违反该原则通常是因为开发者对代码的某些方面过于兴奋、执着或担忧。预测需求是困难的,错误的猜测会导致精力浪费,

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值