学习目标
一份原行为记录、一个有界重构补丁和对应回退点。
适用场景
项目的资料导入函数很长,还混着旧格式处理。你只需要修复“空行导致整批失败”,AI 却建议替换整个解析器。练习先保住现有导入结果,再局部处理空行。
准备条件
- 可恢复的代码版本和独立开发环境;不要直接替换生产程序。
- 脱敏输入样本,包括当前能成功、已知失败和边界情况。
操作步骤
先区分重构与业务修复
重构要求外部行为不变,修复则会改变一个已确认的错误行为。分开列出两者,先记录哪些差异允许发生。对旧系统的意外行为,不知道是否有人依赖时先查调用和需求,不自动判定它“没用”。
本轮边界保留:原有有效行的解析结果、排序和错误格式。 修复:空白行应被忽略,不应导致整批失败。 非目标:更换文件格式、并发导入、重写数据库层。 待确认:只有空行的文件应返回空结果还是校验错误? 在关键语义确认前,不发布依赖它的改动。给现有行为留一份可重复的证据
先在原版本上运行样本,保存输入与输出或有意义的断言。不要把包含随机时间和内部堆栈的整份响应盲目锁成快照。已知缺陷单独登记,避免把错误也永远保护下来。
最小回归样本集样本 A:两条有效记录,顺序和字段应保持。 样本 B:有效行之间有空行,预期由本轮需求确定。 样本 C:带转义符或分隔符的内容,沿用现有格式规范。 样本 D:非法必填字段,保留对外错误约定。 对照记录:旧版本 / 新版本 / 允许差异 / 实际差异 / 结论只在已找到的接缝替换
让 AI 先定位输入规范化、解析与写入三段的实际调用。仅抽出或修复其中一段,维持原函数对外签名。新旧结果可以在脱敏离线样本上对比;不要为比较而让生产写入执行两遍。
给 AI 的有界重构任务目标:在现有解析路径处理空行,并保持已确认格式行为。 先列实际文件、调用者、原有测试与待确认语义。 只改相关解析函数和必要用例,不迁移框架,不改写入接口。 用原样本做前后对照,列全部差异及需求依据。 发现必须扩大范围时,先说明证据与最小替代办法。分开提交行为修复与整理,保留可恢复点
先让必要修复可验证;整理命名、抽函数等另一个有意义的小补丁处理。运行受影响的调用路径,核对旧入口是否仍有使用者。只有引用、配置和实际数据均有依据,才删除被替换的旧路径。
常见误区
- 全仓格式化和重构混在修复中。
- 缩小审查范围,先交付能解释的行为修复;无关整理另做。
- 只因新实现输出不同,就更新所有测试预期。
- 先回查需求及样本差异,不能用新实现反向定义正确答案。
验收清单
- 修复行为和保留行为分开列明。
- 对照在无生产副作用的环境运行。
- 每项差异有依据,未知语义没有被猜测代替。
- 补丁和数据影响都有对应恢复方式。
资料与版本
本文为原创方法整理,示例与提示词需按项目调整;不代表真实用户研究或账号执行结果。