老项目乱成一团?三步让它像新的一样清晰
老项目乱成一团?三步让它像新的一样清晰
先说我解决了什么
你肯定遇到过这种情况:
当你接手一个三年的老项目,想要修改某个方法或者修复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 维护核心依赖链
关键是每层都有自指的约束:
评论已关闭