问题
历史遗留是最大的负担。数据格式、代码组织、系统架构、协议设计。如何处理历史包袱?
结论
历史包袱一定能找到解决方案的,取决于你要付出多大的代价投入。
是否有必要处理历史包袱
旧的技术不等价于软件有缺陷。当软件做成,它能解决某些问题。
处理历史包袱
必要的准备步骤
- 获取尽可能多的资料理解历史包袱的上下文
- 画出相关逻辑的时序图,以便分析执行流程
- 确定问题是什么
- 确定问题的影响范围边界
- 确定目标所负责的范围边界
- 列出所有依赖当前目标的事物
- 确定依赖是如何建立的
- 制定解决方案
制定解决方案
隔离历史包袱,避免添加新的依赖,避免增加复杂度。
使用 Adapter Pattern 做转接。
使用小的,增量的改进替换,渐进构建新的处理系统。始终保证旧方案可用,新方案也可用。
分流业务,将部分业务从旧方案分给新方案处理。
当新方案完成,将所有业务都迁移到新方案,在所有稳定之前,保留旧方案和 Adapter,以作回退方案。
等新方案足够稳定,去掉旧方案和 Adapter。
当新 Feature 来了怎么办?
隔离历史包袱,避免添加新的依赖。
新 Feature 使用新的方案来做。因为这是你可控的,我假设默认你不可控旧方案。
仍然需要维护旧方案
如果有 bug,需要修补旧方案。在新方案稳定接手所有业务之前,要保证旧方案可用。
怎么避免历史包袱
参考
How to conquer legacy code
At some point in your developer career, your boss will hand you a piece of legacy code - code that someone else wrote a long time ago.
https://medium.freecodecamp.org/conquer-legacy-code-f9e23a6ab758