研发协作
中途设计决策变更后,清理分支中废弃设计的残留并重写代码使其如…
当分支开发中途发生重大设计决策变更,需要清除旧方案的残留痕迹并重写受影响的代码、注释、测试和文档时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 49/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 60/100 ×0.15
适用场景
中途设计决策变更后,清理分支中废弃设计的通用
解决思路
- 用一行话明确决策:'设计是 X;被放弃的方案是 Y'。从用户或会话上下文中获取;若未说明,则从分支 diff 和提交信息中重建,并在做大规模编辑前与用户确认这一行总结——基于误读的决策做清理会破坏正确的代码。
- 计算分支 diff:`git diff $(git merge-base HEAD origin/main)...HEAD`(回退顺序为 `origin/develop`,再是 `develop`)。
- 清理范围仅限决策所触及的代码:实现该决策的已改动文件,以及引用了被重命名或移除概念的文件(通过 grep 旧名称来查找)。
- 其余一切都在范围之外。此技能不是进行无关重构、格式化或顺手改进的许可。
- 检查死代码:仅被废弃路径使用的分支、参数、功能开关、配置键和辅助函数。
- 检查垫片和间接层:仅为桥接旧设计到新设计而存在的适配器、包装器和抽象层。
- 检查命名和结构:由旧概念塑造的标识符、文件和模块——如 `newParser`、`handleV2`、`legacyFoo`,或围绕已不存在概念组织的模块布局。
- 检查注释和文档字符串:任何描述旧设计或叙述变更的内容——'previously'、'instead of'、'now we'、'changed from X to Y'。描述必须只陈述当前设计。
- 检查测试:固定废弃行为、过渡状态或旧 API 形态的测试。按当前设计的预期行为重写它们;不要让其意外保持通过。
- 检查文档:描述旧机制的 README 章节、ADR、图表和示例。就地更新——不要添加'迁移说明'。
- 检查 TODO:为旧计划留下的条目。
- 在所有地方按当前概念重命名,而不仅仅是在代价低的地方。
- 直接删除死代码;绝不注释掉或'以防万一'地保留。Git 历史中保存着旧版本。
- 合并已不再有价值的间接层。
- 重写受影响的注释、文档字符串和文档,使其只描述当前状态。
- 运行项目的构建和测试;清理不得改变幸存设计的行为。
- 对生成的分支 diff 用历史词做冒烟检查:`previously|instead of|no longer|old |new |V2|legacy`——命中项是待修复的候选,而非自动违规;逐个判断。
- 在整个代码树中 grep 被放弃的名称,确认没有悬空引用残留。
- 报告删除、重命名和重写的内容,按上述类别分组,并指出因超出决策范围而未处理的任何可疑之处。
适用边界 · 注意事项
- 不适用于一般性重构或查找 bug 的遍历。
- 不适用于没有发生设计决策变更的情况。
- 不适用于决策范围之外的代码——不得借机做无关改进或格式化。