
name: tdd-workflows-tdd-refactordescription: “Use when working with tdd workflows tdd refactor”risk: criticalsource: communitydate_added: “2026-02-27”何时使用此技能处理 tdd workflows tdd refactor 任务或工作流时需要关于 tdd workflows tdd refactor 的指导、最佳实践或检查清单时何时不使用此技能任务与 tdd workflows tdd refactor 无关时你需要此范围之外的领域或工具时说明澄清目标、约束和所需输入。应用相关最佳实践并验证结果。提供可操作的步骤和验证方法。如果需要详细示例请打开resources/implementation-playbook.md。借助全面的测试安全网自信地重构代码[扩展思考此工具使用 tdd-orchestrator 代理opus 模型进行复杂重构同时保持所有测试绿色。它应用设计模式、改进代码质量并优化性能且拥有全面测试覆盖的安全保障。]用法使用 Task 工具subagent_type“tdd-orchestrator” 执行安全重构。提示词重构此代码同时保持所有测试绿色$ARGUMENTS。应用 TDD 重构阶段核心流程1. 预评估运行测试以建立绿色基线分析代码坏味道和测试覆盖记录当前性能指标创建增量重构计划2. 代码坏味道检测重复代码 → 提取方法/类过长的函数 → 分解为聚焦的函数过大的类 → 拆分职责过长的参数列表 → 参数对象依恋情结Feature Envy→ 将方法移动到适当的类基本类型偏执Primitive Obsession→ 值对象Switch 语句 → 多态死代码 → 移除3. 设计模式应用创建型模式工厂 Factory、构建器 Builder、单例 Singleton应用结构型模式适配器 Adapter、门面 Facade、装饰器 Decorator应用行为型模式策略 Strategy、观察者 Observer、命令 Command应用领域模式仓储 Repository、服务 Service、值对象 Value Objects仅在模式能带来明确价值时使用4. SOLID 原则单一职责只有一个变更理由开闭原则对扩展开放对修改关闭里氏替换子类型可替换接口隔离小而聚焦的接口依赖倒置依赖抽象5. 重构技术提取方法/变量/接口内联不必要的间接层为清晰而重命名将方法/字段移动到适当的类用常量替换魔法数字封装字段用多态替换条件引入空对象Null Object6. 性能优化分析以识别瓶颈优化算法和数据结构在有收益处实现缓存减少数据库查询消除 N1懒加载和分页始终在前后进行测量7. 增量步骤做小而原子的变更每次修改后运行测试每次成功重构后提交将重构与行为变更分开在需要时使用脚手架8. 架构演进层分离与依赖管理模块边界与接口定义用于解耦的事件驱动模式数据库访问模式优化9. 安全验证每次变更后运行完整测试套件性能回归测试用于测试有效性的变异测试重大变更的回滚计划10. 高级模式绞杀者模式Strangler Fig渐进式遗留替换抽象分支Branch by Abstraction大规模变更并行变更Parallel Change扩展-收缩模式御木本方法Mikado Method依赖图导航输出要求应用了改进的重构代码测试结果全部绿色前后指标对比已应用的重构技术列表性能改进测量剩余技术债务评估安全检查清单提交前✓ 所有测试通过100% 绿色✓ 无功能回归✓ 性能指标可接受✓ 代码覆盖率保持/提高✓ 文档已更新恢复协议如果测试失败立即还原最后一次变更识别破坏性重构应用更小的增量变更使用版本控制进行安全实验示例提取方法模式重构前classOrderProcessor{processOrder(order:Order):ProcessResult{// Validationif(!order.customerId||order.items.length0){return{success:false,error:Invalid order};}// Calculate totalsletsubtotal0;for(constitemoforder.items){subtotalitem.price*item.quantity;}lettotalsubtotal(subtotal*0.08)(subtotal100?0:15);// Process payment...// Update inventory...// Send confirmation...}}重构后classOrderProcessor{asyncprocessOrder(order:Order):PromiseProcessResult{constvalidationthis.validateOrder(order);if(!validation.isValid)returnProcessResult.failure(validation.error);constorderTotalOrderTotal.calculate(order);constinventoryCheckawaitthis.inventoryService.checkAvailability(order.items);if(!inventoryCheck.available)returnProcessResult.failure(inventoryCheck.reason);awaitthis.paymentService.processPayment(order.paymentMethod,orderTotal.total);awaitthis.inventoryService.reserveItems(order.items);awaitthis.notificationService.sendOrderConfirmation(order,orderTotal);returnProcessResult.success(order.id,orderTotal.total);}privatevalidateOrder(order:Order):ValidationResult{if(!order.customerId)returnValidationResult.invalid(Customer ID required);if(order.items.length0)returnValidationResult.invalid(Order must contain items);returnValidationResult.valid();}}已应用提取方法、值对象、依赖注入、异步模式要重构的代码$ARGUMENTS局限性仅在任务明确匹配上述范围时使用此技能。不要将输出视为环境特定验证、测试或专家审查的替代品。如果缺少所需的输入、权限、安全边界或成功标准请停下来询问澄清。