重构前确认spec范围:
变更范围:明确重构影响哪些spec requirement,是否需要更新spec
✓ Spec范围确认:
- 影响Scenario: [scenario列表]
- 是否需要更新spec: [是/否]
- 重构后验收标准: [标准]
对图遍历、环检测、状态机、依赖解析类代码的重构,强制先建方向语义模型再动码:
详见 test-generation.md 算法边界用例清单与 code-review.md 算法正确性审查清单。
| 坏味道 | 特征 | 重构手法 | | - | - | - | | 过长函数 | 函数超过50行 | 提取函数 | | 过大类 | 类承担过多职责 | 提取类 | | 重复代码 | 相同/相似代码出现多次 | 提取公共函数 | | 过长参数列表 | 参数超过4个 | 引入参数对象 | | 发散式变化 | 一个类因多种原因修改 | 拆分职责 | | 霰弹式修改 | 修改一处需要改多个类 | 搬移函数/内联 | | 特性依恋 | 函数频繁访问其他类数据 | 搬移函数 | | 数据泥团 | 多处出现相同数据组合 | 提取对象 | | Switch语句 | 大量条件分支 | 多态替代 | | 临时字段 | 对象某些字段只在特定场景使用 | 提取类 | | 过度设计 | 抽象类/接口/配置对象做简单计算 | 直接删除,回归简单 | | 推测性抽象 | 为"未来可能"的需求做的抽象 | 删除,需要时再创建 |
对每个识别出的坏味道:
Karpathy优先级规则:
按优先级排序:
重构完成后,将关键决策记录到项目记忆(参见 project-memory-management.md):
## 重构分析报告
**分析文件**:[文件名]
**代码行数**:[X行]
**发现坏味道**:[X]个
## 坏味道识别
### 坏味道1:[名称]
**位置**:[函数/类/行号]
**严重程度**:高/中/低
**原代码**:
[代码片段]``` 问题说明:[为什么这是坏味道]
适用坏味道:[坏味道名称] 重构步骤:
重构前:
**重构后**:
[代码]```
收益:[具体改进] 风险:[可能的问题]
| 优先级 | 坏味道 | 重构手法 | 预估工作量 | | - | - | - | - | | P0 | [名称] | [手法] | [小/中/大] | | P1 | [名称] | [手法] | [小/中/大] |
| 步骤 | 失败条件 | 回退目标 | 最大重试 | 不可恢复时升级路径 | | - | - | - | - | - | | 第一步:Spec范围确认 | 无spec或spec与代码严重偏离 | 基于代码反推预期行为,标注"无spec对照" | 1 | 建议先走 Spec驱动开发 补全spec再重构 | | 第二步:识别坏味道 | 代码量过大,坏味道识别超限 | 按函数/类分批识别,每批输出局部清单 | 0 | 建议缩小重构范围或分模块进行 | | 第三步:评估重构价值(Simplicity First优先) | 坏味道收益与风险难以量化 | 默认按"高收益低风险优先",标注存疑项 | 1 | 输出收益-风险矩阵,由用户决策优先级 | | 第四步:制定重构计划 | 重构步骤依赖关系复杂,无法线性排序 | 按Wave分组,标注并行/串行依赖 | 2 | 输出依赖图,建议拆分为多个独立重构任务 | | 第五步:生成重构后代码 | 重构后代码行数显著增加(违反Karpathy红线) | 退回第三步重新评估,优先"删除>重组" | 2 | 输出两套方案(保守重构 vs 激进简化),由用户选择 | | 第六步:验证 | 原始测试用例缺失,无法回归 | 生成最小回归测试覆盖核心路径 | 1 | 标注"回归覆盖不足",建议先走 测试用例生成 补全基线 | | 第七步:记录到项目记忆 | 项目记忆系统不可用 | 输出Decision Record到本地文件 | 1 | 标注"决策未沉淀",提示用户手动保存 |
karpathy-coding-guidelines 检查是否过度设计code-review 全面评估代码问题test-generation 生成基线测试保障安全code-generation 生成替代实现