T04
设计与开发
⭐⭐⭐
⏱ 约 45 分钟
安全重构
Refactor with Behavior Safety
💡 适用场景: 代码改进、技术债处理
📄 T04: Refactor with Behavior Safety(安全重构) 其他
⭐⭐⭐ 中级 | 在保持功能不变的前提下改进代码
💡 核心概念 核心概念
安全重构的关键是:
- 行为不变 - 功能完全相同,没有任何变化
- 逐步进行 - 不要一次改太多
- 测试覆盖 - 有充分的测试保证安全
- 版本控制 - 每个步骤都提交,便于回滚
重构的目标:
- 提高可读性
- 降低复杂度
- 改善性能
- 消除代码坏味道
- 降低技术债
✅ 最佳实践 最佳实践
🎯 原则1: 先有测试再重构
- 先补充单元测试
- 确保测试覆盖所有场景
- 之后再开始重构
🎯 原则2: 小步快走
- 每个重构步骤都很小
- 每步之后立即运行测试
- 发现问题立即回滚
🎯 原则3: 明确重构目标
- 为什么要重构
- 目标是什么
- 成功的标准是什么
🎯 原则4: 充分沟通
- 告知团队你在重构什么
- 说明重构的益处
- 邀请code review
📄 常见重构模式 其他
模式1: 提取方法(Extract Method)
场景: 函数太长,逻辑混杂
Prompt模板:
请帮我重构这个函数,将其拆分成多个小函数。
原始函数:
[函数代码]
问题:
- 函数太长([行数]行)
- 包含[数字]个不同的逻辑
拆分建议:
[说出你想如何拆分]
要求:
- 保持原有功能完全不变
- 新函数应该有清晰的职责
- 函数名应该具有说明性
- 包括[语言]的实现
模式2: 消除重复代码
场景: 多个函数有相同的逻辑
Prompt模板:
这些函数有重复代码,请帮我消除重复。
函数1:
[代码]
函数2:
[代码]
函数3:
[代码]
重复的部分:
[指出重复的逻辑]
重构目标:
- 提取公共代码
- 创建通用的helper方法
- 保持原有API不变
使用[语言/框架]实现。
模式3: 简化条件表达式
场景: 复杂的if-else逻辑
Prompt模板:
这段条件判断很复杂,请简化它。
原始代码:
```python
if age >= 18 and not has_debt and employment_status == 'employed':
if years_employed >= 2:
if credit_score >= 600:
return approve_loan()
return reject_loan()
请重构为更简洁的版本:
- 使用提前返回(early return)
- 提取验证逻辑到独立方法
- 使用更清晰的变量名
### 模式4: 替换临时变量
**场景**: 使用临时变量而不是更好的方式
**Prompt模板:**
这段代码使用了太多临时变量,请简化。
原始代码: [代码]
问题:
- 临时变量[var1, var2]没有明确含义
- 代码逻辑不清晰
优化建议:
- 使用函数替代临时变量
- 使用更好的数据结构
- 或使用函数链式调用
请提供改进版本。
---
📋 重构检查清单 检查清单
📄 🎓 下一步 其他
- 重构发现bug → T03: Bug Diagnosis
- 需要测试覆盖 → T05: Unit Testing
- 需要审查 → T07: Code Review
💬 Prompt 模板 (3)
安全重构 - Prompt 1
请帮我重构这个函数,将其拆分成多个小函数。
原始函数:
[函数代码]
问题:
- 函数太长([行数]行)
- 包含[数字]个不同的逻辑
拆分建议:
[说出你想如何拆分]
要求:
- 保持原有功能完全不变
- 新函数应该有清晰的职责
- 函数名应该具有说明性
- 包括[语言]的实现
安全重构 - Prompt 2
这些函数有重复代码,请帮我消除重复。
函数1:
[代码]
函数2:
[代码]
函数3:
[代码]
重复的部分:
[指出重复的逻辑]
重构目标:
- 提取公共代码
- 创建通用的helper方法
- 保持原有API不变
使用[语言/框架]实现。
安全重构 - Prompt 3
这段代码使用了太多临时变量,请简化。
原始代码:
[代码]
问题:
- 临时变量[var1, var2]没有明确含义
- 代码逻辑不清晰
优化建议:
- 使用函数替代临时变量
- 使用更好的数据结构
- 或使用函数链式调用
请提供改进版本。