重构计划模板
使用这个模板来记录和跟踪你的重构工作。
项目信息
| 字段 | 值 |
|---|---|
| 项目 / 模块 | [项目名称] |
| 目标文件 | [要重构的文件列表] |
| 创建日期 | [日期] |
| 作者 | [姓名] |
| 状态 | Draft / In Review / Approved / In Progress / Completed |
执行摘要
目标
- [主要目标:例如,提升支付流程可读性]
- [次要目标:例如,减少重复代码]
- [第三目标:例如,提升可测试性]
约束
- [约束 1:例如,不能改公共 API]
- [约束 2:例如,必须保持向后兼容]
- [约束 3:例如,不能改数据库 schema]
风险等级
- Low - 小改动,测试充分
- Medium - 中等改动,有一定风险
- High - 大改动,需要特别注意
重构前检查清单
测试覆盖评估
| 指标 | 当前值 | 目标值 | 状态 |
|---|---|---|---|
| 单元测试覆盖率 | __% | ≥80% | |
| 集成测试 | Yes/No | Yes | |
| 所有测试通过 | Yes/No | Yes |
开始前必须满足
- 所有测试通过
- 已读懂并审查代码
- 已有备份 / 版本控制
- 已获得用户批准
已识别的代码异味
摘要
| # | 异味 | 位置 | 严重性 | 优先级 |
|---|---|---|---|---|
| 1 | [例如,Long Method] | [file:line] | High | P1 |
| 2 | [例如,Duplicate Code] | [file:line] | Medium | P2 |
| 3 | [例如,Feature Envy] | [file:line] | Low | P3 |
详细分析
异味 #1:[名称]
位置:path/to/file.js:45-120
描述:[对问题的详细描述]
影响:
- [影响 1]
- [影响 2]
建议方案:[如何修复的简要说明]
重构阶段
阶段 A:快速收益(低风险)
目标:快速、低风险的改进,立刻产生价值
预计改动:[X 个文件,Y 个方法]
需要用户批准:Yes / No
| # | 任务 | 文件 | 重构手法 | 状态 |
|---|---|---|---|---|
| A1 | 将变量 x 重命名为 userCount | utils.js:15 | Rename Variable | [ ] |
| A2 | 删除未使用的 oldHandler() | api.js:89 | Remove Dead Code | [ ] |
| A3 | 提取重复的验证逻辑 | form.js:23,67 | Extract Method | [ ] |
回滚方案:回退 A1-A3 的提交
阶段 B:结构优化(中风险)
目标:改善代码组织和清晰度
预计改动:[X 个文件,Y 个方法]
需要用户批准:Yes
依赖:必须先完成阶段 A
| # | 任务 | 文件 | 重构手法 | 状态 |
|---|---|---|---|---|
| B1 | 从长函数中提取 calculatePrice() | order.js:45 | Extract Method | [ ] |
| B2 | 引入 OrderDetails 参数对象 | order.js:12 | Introduce Parameter Object | [ ] |
| B3 | 将 formatAddress() 移动到 Address 类 | customer.js:78 | Move Method | [ ] |
回滚方案:回滚到阶段 A 完成后的提交
阶段 C:架构改动(高风险)
目标:处理更深层的结构问题
预计改动:[X 个文件,Y 个方法]
需要用户批准:Yes
依赖:必须先完成阶段 A 和 B
| # | 任务 | 文件 | 重构手法 | 状态 |
|---|---|---|---|---|
| C1 | 用多态替换价格 switch | pricing.js:30 | Replace Conditional with Polymorphism | [ ] |
| C2 | 提取 NotificationService 类 | user.js:100 | Extract Class | [ ] |
回滚方案:回滚到阶段 B 完成后的提交
详细重构步骤
任务 [ID]:[任务名称]
对应异味:[异味名称]
重构手法:[手法名称]
风险等级:Low / Medium / High
上下文
重构前(当前状态):
javascript
// 把当前代码贴在这里重构后(期望状态):
javascript
// 把期望代码贴在这里逐步操作
步骤 1:[描述]
- 测试:完成此步后运行测试
- 预期:所有测试通过
步骤 2:[描述]
- 测试:完成此步后运行测试
- 预期:所有测试通过
步骤 3:[描述]
- 测试:完成此步后运行测试
- 预期:所有测试通过
验证
- 所有测试通过
- 行为未改变
- 代码可编译
- 没有新的警告
提交信息
refactor: [描述这次重构]进度跟踪
阶段状态
| 阶段 | 状态 | 开始时间 | 完成时间 | 测试是否通过 |
|---|---|---|---|---|
| A | Not Started / In Progress / Done | |||
| B | Not Started / In Progress / Done | |||
| C | Not Started / In Progress / Done |
遇到的问题
| # | 问题 | 解决方案 | 状态 |
|---|---|---|---|
| 1 | [描述] | [如何解决] | Open / Resolved |
指标对比
重构前
| 指标 | 文件 1 | 文件 2 | 总计 |
|---|---|---|---|
| 代码行数 | |||
| 圈复杂度 | |||
| 可维护性指标 | |||
| 方法数量 | |||
| 平均方法长度 |
重构后
| 指标 | 文件 1 | 文件 2 | 总计 | 变化 |
|---|---|---|---|---|
| 代码行数 | ||||
| 圈复杂度 | ||||
| 可维护性指标 | ||||
| 方法数量 | ||||
| 平均方法长度 |
重构后检查清单
- 所有测试通过
- 没有新的警告或错误
- 代码成功编译
- 已完成手工验证
- 文档已更新(如需要)
- 已完成代码审查
- 指标有改善
- 已获得用户签字确认
经验总结
做得好的地方
- [Item 1]
- [Item 2]
可以改进的地方
- [Item 1]
- [Item 2]
未来建议
- [Item 1]
- [Item 2]
批准
| 角色 | 姓名 | 日期 | 签名 |
|---|---|---|---|
| Plan Author | |||
| Technical Lead | |||
| Product Owner |
附录
A. 相关文档
- [相关文档链接]
B. 参考资料
- [代码异味目录]
- [重构目录]
C. 使用的工具
- [测试框架]
- [Lint 工具]
- [复杂度分析工具]

