Let's face it, all we are doing is writing tomorrow's legacy software today.
曾经作为行业标准的 IOE,现在人人唯恐避之不及;风靡一时的 SOA,也最终被微服务所取代;而如果以后云服务进一步发展,大型服务的部署和演进不再是瓶颈,单体会不会重新流行?谁知道呢。
你的系统真的不是遗留系统吗?
- 代码质量一言难尽,改个需求或做维护经常加班,让你恨不得推翻重写;
- 架构混乱,模块之间职责不明,一个需求需要修改四五个服务;
- CI/CD 运转不畅,经常莫名其妙地挂掉,每次升级、上线都一拖再拖;
- 团队结构不稳定,人员变动频繁;
- 大家都在拼命开发新需求,没人关心技术债;
……
《修改代码的艺术》一书的作者 Michael Feathers 说过,“没有测试的代码都是遗留代码”。
软件系统本身就是一个不断熵增的过程,代码逐渐从有序变得无序。如果没有测试的严防死守,熵增的过程就会慢慢加快,代码很快就会变得混乱不堪。
三个原则分别是以降低认知负载为前提、以假设驱动为指引、以增量演进为手段

提取接缝(Extract Seem)