老项目乱成一团?三步让它像新的一样清晰

先说我解决了什么

你肯定遇到过这种情况:

当你接手一个三年的老项目,想要修改某个方法或者修复bug的时候。是不是不敢改动,你怕修改了之后会引发蝴蝶效应,为什么那?

因为你不知道:

这个配置被谁用了?
改动了会炸哪里?
是不是还有其他隐藏的依赖?

于是开始全局搜索引用依赖,翻调用栈,看git历史记录,问老员工(如果还在的话)。一个小时过去了,你还在做影响分析。

更让你感觉操蛋的是:

README?三年没更新
架构图?在某个离职同事的电脑里
文档?有,全是过期旧的
注释?要么没有,要么是"这段代码很重要,不要删",要么都是骗人的。。。。。。

用三层索引结构解决了这个问题:从改代码心惊胆战头疼失眠,到15分钟完成影响分析并提交PR,让你没有失眠的痛苦

核心思路很简单:让每个文件、每个文件夹、整个项目都能回答三个问题:

1. 我依赖了谁?
2. 谁依赖了我?
3. 我在系统中所处于什么位置?

往下看具体怎么做。

----------------------

为什么现有方案都不行

你可能遇到过:

JS Doc/Type Doc:告诉你函数签名,但告诉不了你「这个模块在整个系统中的位置」

// 它能生成这个:
function processUser(data: UserData): Promise<User>

// 但它告诉不了你:
// - 这个函数被8个地方调用,其中3个是核心业务流程
// - 修改它需要回归测试支付模块
// - 它依赖的 Redis 连接在高峰期会超时

依赖分析工具:生成一张200个节点的依赖图,然后呢?人脑处理不了那个复杂度。而且它只能看到技术依赖(import关系),看不到核心的业务依赖(这个模块改了会影响哪个业务)。

ADR/架构文档:写是写了,半年后就过期了,没有同步更新。因为文档和代码是两个生命周期,没有强制同步机制。

解法思路:三层分形索引

核心就是让文档成为代码的一部分,而不是代码的依附。
文件级:每个文件开头3行,要声明 INPUT/OUTPUT/POS

文件夹级:INDEX.md 维护本层架构说明

项目级:根 README 维护核心依赖链

关键是每层都有自指的约束:

标签: none

评论已关闭