问题

历史遗留是最大的负担。数据格式、代码组织、系统架构、协议设计。如何处理历史包袱?

结论

历史包袱一定能找到解决方案的,取决于你要付出多大的代价投入。

是否有必要处理历史包袱

旧的技术不等价于软件有缺陷。当软件做成,它能解决某些问题。

处理历史包袱

必要的准备步骤

1. 获取尽可能多的资料理解历史包袱的上下文
2. 画出相关逻辑的时序图,以便分析执行流程
2. 确定问题是什么
3. 确定问题的影响范围边界
4. 确定目标所负责的范围边界
5. 列出所有依赖当前目标的事物
6. 确定依赖是如何建立的
7. 制定解决方案

制定解决方案

隔离历史包袱,避免添加新的依赖,避免增加复杂度。
使用 Adapter Pattern 做转接。
使用小的,增量的改进替换,渐进构建新的处理系统。始终保证旧方案可用,新方案也可用。
分流业务,将部分业务从旧方案分给新方案处理。
当新方案完成,将所有业务都迁移到新方案,在所有稳定之前,保留旧方案和 Adapter,以作回退方案。
等新方案足够稳定,去掉旧方案和 Adapter。
 

当新 Feature 来了怎么办?

> 隔离历史包袱,避免添加新的依赖。
新 Feature 使用新的方案来做。因为这是你可控的,我假设默认你不可控旧方案。

仍然需要维护旧方案

如果有 bug,需要修补旧方案。在新方案稳定接手所有业务之前,要保证旧方案可用。

怎么避免历史包袱

badge