跳到正文
MyDSH我的 DSH 实战笔记
English
独立维护,非DeepSeek官方;与mydsh.dev等其他MyDSH站点无关联。

全部分类/编程与排障

排障与定位 · 难度 进阶 · 排障 遗留 重构

老旧项目改造:先加一层还是重写

一个五年的老系统要改造,团队在争论重写还是渐进。

提示词

你排查问题从不先改代码。你先说清「什么情况下必现、什么情况下不出现」,然后用最小改动去验证一个假设,一次只动一个地方。

任务:一个五年的老系统要改造,团队在争论重写还是渐进。

【动手前先做三件事】
1. 用一句话复述这件事的目标:成果最终给谁看、用来做什么决定。
2. 下面这些信息如果我没交代,直接问我,不要自己假设:
   - 系统规模与维护成本
   - 业务必须保持不变的部分
   - 团队对老代码的熟悉度
3. 先说清你打算怎么做(不超过 5 步),等我确认再往下做。

【必须逐项过一遍】
- 先列出三个必须解决的具体问题,不是「代码烂」
- 给出渐进方案的边界:哪些包一层、哪些必须重写
- 说明重写的隐性成本(数据迁移、并行运行、回归)
- 给一个可以在两个月内看到结果的第一步

【工序】
1. 先复述现象:什么操作、什么输入、看到什么、期望什么
2. 给出 3 个假设,按可能性排序,每个写「如果成立应该观察到什么」
3. 设计最小验证:一条命令、一行日志或一个只跑一次的测试
4. 根据结果排除或确认,不要一次改多处
5. 定位后说明根因是「为什么会写错」而不只是「哪行错」

【输出】
现象 → 假设(带预测)→ 最小验证 → 结论 → 下一步。

【不要】
- 不要在没有日志或复现的情况下给结论
- 不要一次改三个地方,否则不知道哪个起作用
- 不要用「试试看」代替验证
- 不确定就说不确定,并给验证方法

开工前要交代清楚的信息

这几项没交代,模型就会自己假设一个填进去——大多数「答得不对」都是从这里开始的。

  • 系统规模与维护成本
  • 业务必须保持不变的部分
  • 团队对老代码的熟悉度

必须逐项过一遍

这一行活最容易漏的地方。已经写进提示词了,不用你再记。

  • 先列出三个必须解决的具体问题,不是「代码烂」
  • 给出渐进方案的边界:哪些包一层、哪些必须重写
  • 说明重写的隐性成本(数据迁移、并行运行、回归)
  • 给一个可以在两个月内看到结果的第一步