利用 API 实现系统演进与云迁移
1. 测试与代码重构
在不运行整个系统的情况下进行测试是一种有效的方法,例如使用模拟对象(mocks)或测试替身(test doubles)。但如果应用程序设计不佳,定义代码中的“接缝”(seams)可能会很复杂,这会增加理解代码整体行为的难度。在处理遗留代码时,将代码拆分成更模块化的形式并进行重构也会变得困难。
对于没有测试的遗留代码,Nicolas Carlo 提出了一个有用的拆分“接缝”的方法:
1. 识别变更点(接缝) :找出代码中可能发生变化的部分。
2. 打破依赖 :减少代码之间的耦合,使各部分能够独立演进。
3. 编写测试 :为代码添加测试,确保修改不会引入新的问题。
4. 进行更改 :根据需求对代码进行修改。
5. 重构 :优化代码结构,提高代码的可读性和可维护性。
在设计变更时,可以考虑为两个或多个协作组件创建 API 设计。如果“接缝”的定义可能在其他地方使用,跨服务 API 是一个不错的选择。例如,当代码库中多个部分有相似的执行逻辑,并且目标是将一个服务拆分成更小的基于服务的架构时,就有机会定义跨服务的复用。
2. 识别系统中的变更杠杆点
有时,架构师或开发人员很容易识别出“变更杠杆点”,即那些明显需要重构和更改以提升系统性能、可扩展性或安全性的代码和服务。但在继承一个代码库或系统时,这些杠杆点并不总是显而易见的。这时,可以借助一些工具和书籍来