
关于
TDD 重构阶段工作流,在测试通过后安全地改进代码结构和设计。
name: tdd-workflows-tdd-refactor description: "用于TDD工作流中的重构阶段" risk: unknown source: community date_added: "2026-02-27"
何时使用此技能
- 处理TDD工作流重构相关的任务或工作流程
- 需要TDD工作流重构领域的指导、最佳实践或检查清单
何时不使用此技能
- 任务与TDD工作流重构无关
- 需要此范围之外的其他领域或工具
说明
- 明确目标、约束条件和所需输入。
- 应用相关最佳实践并验证结果。
- 提供可操作的步骤和验证方法。
- 如需详细示例,请打开
resources/implementation-playbook.md。
在全面测试安全网的保护下自信地重构代码:
[扩展思考:此工具使用tdd-orchestrator代理(opus模型)进行复杂重构,同时保持所有测试通过。它应用设计模式、提升代码质量并优化性能,同时拥有全面测试覆盖的安全保障。]
用法
使用 Task 工具并设置 subagent_type="tdd-orchestrator" 来执行安全重构。
提示:"在保持所有测试通过的前提下重构此代码:$ARGUMENTS。应用TDD重构阶段:
核心流程
1. 预评估
- 运行测试建立绿色基线
- 分析代码异味和测试覆盖率
- 记录当前性能指标
- 创建增量重构计划
2. 代码异味检测
- 重复代码 → 提取方法/类
- 过长方法 → 分解为专注的函数
- 过大的类 → 拆分职责
- 过长参数列表 → 参数对象
- 特性嫉妒 → 将方法移至适当的类
- 基本类型偏执 → 值对象
- Switch语句 → 多态
- 死代码 → 移除
3. 设计模式
- 应用创建型模式(工厂、建造者、单例)
- 应用结构型模式(适配器、外观、装饰器)
- 应用行为型模式(策略、观察者、命令)
- 应用领域模式(仓储、服务、值对象)
- 仅在明确增加价值时使用模式
4. SOLID原则
- 单一职责:只有一个变更理由
- 开闭原则:对扩展开放,对修改关闭
- 里氏替换:子类型可替换
- 接口隔离:小而专注的接口
- 依赖倒置:依赖抽象
5. 重构技术
- 提取方法/变量/接口
- 内联不必要的间接层
- 重命名以提高清晰度
- 将方法/字段移至适当的类
- 用常量替换魔法数字
- 封装字段
- 用多态替换条件语句
- 引入空对象
6. 性能优化
- 通过性能分析识别瓶颈
- 优化算法和数据结构
- 在有益处时实施缓存
- 减少数据库查询(消除N+1问题)
- 延迟加载和分页
- 始终在优化前后进行测量
7. 增量步骤
- 进行小的、原子性的更改
- 每次修改后运行测试
- 每次成功重构后提交
- 将重构与行为变更分开
- 需要时使用脚手架
8. 架构演进
- 层分离和依赖管理
- 模块边界和接口定义
- 事件驱动模式用于解耦
- 数据库访问模式优化
9. 安全验证
- 每次更改后运行完整测试套件
- 性能回归测试
- 变异测试验证测试有效性
- 重大更改的回滚计划
10. 高级模式
- 绞杀者模式:逐步替换遗留系统
- 抽象分支:大规模变更
- 并行变更:扩展-收缩模式
- Mikado方法:依赖图导航
输出要求
- 已应用改进的重构代码
- 测试结果(全部通过)
- 前后指标对比
- 已应用的重构技术列表
- 性能改进测量
- 剩余技术债务评估
安全检查清单
提交前:
- 所有测试通过(100%绿色)
- 无功能回归
- 性能指标可接受
- 代码覆盖率保持/提升
- 文档已更新
恢复协议
如果测试失败:
- 立即回退最后的更改
- 识别导致破坏的重构
- 应用更小的增量更改
- 使用版本控制进行安全实验
示例:提取方法模式
之前:
class OrderProcessor {
processOrder(order: Order): ProcessResult {
// Validation
if (!order.customerId || order.items.length === 0) {
return { success: false, error: "Invalid order" };
}
// Calculate totals
let subtotal = 0;
for (const item of order.items) {
subtotal += item.price * item.quantity;
}
let total = subtotal + (subtotal * 0.08) + (subtotal > 100 ? 0 : 15);
// Process payment...
// Update inventory...
// Send confirmation...
}
}
之后:
class OrderProcessor {
async processOrder(order: Order): Promise<ProcessResult> {
co
兼容工具
Claude CodeCursor
标签
AI与机器学习