重构模式Skill refactoring-patterns

这是一个关于代码重构模式的技能,专注于应用安全的重构技术来改进软件结构、减少技术债务并提高代码的可维护性,同时确保不改变外部行为。关键词:代码重构、测试驱动、代码质量、技术债务、软件开发、重构模式、TDD。

测试 0 次安装 0 次浏览 更新于 3/9/2026

name: 重构模式 description: “应用安全重构模式以改进代码结构而不改变行为。用于清理代码、减少技术债务或提高可维护性。” category: 开发实践 priority: 中 tokenEstimate: 1000 agents: [qe-code-reviewer, qe-quality-analyzer, qe-test-refactorer] implementation_status: 优化 optimization_version: 1.0 last_optimized: 2025-12-03 dependencies: [] quick_reference_card: true tags: [重构, 代码质量, 技术债务, 可维护性, 干净代码] trust_tier: 2 validation: schema_path: schemas/output.json validator_path: scripts/validate-config.json


重构模式

<default_to_action> 重构时:

  1. 确保测试通过(没有测试不要重构)
  2. 做小改动(一次一个重构)
  3. 运行测试(必须保持绿色)
  4. 提交(保存进度)
  5. 重复

安全重构周期:

npm test               # 绿色 ✅
# 做一个小的改动
npm test               # 仍然绿色 ✅
git commit -m "refactor: extract calculateTotal"
# 重复

代码异味 → 重构:

异味 重构
长方法(>20 行) 提取方法
大类 提取类
长参数列表(>3) 引入参数对象
重复代码 提取方法/类
复杂条件语句 分解条件
魔法数字 命名常量
嵌套循环 替换为管道

永不重构:

  • 没有测试时(先写测试)
  • 当截止日期是明天时
  • 你不理解的代码
  • 工作正常且不会触及的代码 </default_to_action>

快速参考卡

常见重构

模式 之前 之后
提取方法 50 行的函数 5 个小函数
提取类 做 5 件事的类 5 个单一职责的类
参数对象 fn(a,b,c,d,e,f) fn(options)
替换条件 if (type === 'a') {...} 多态
管道 嵌套循环 .filter().map().reduce()

三条规则

  1. 第一次 → 直接做
  2. 第二次 → 容忍并重复
  3. 第三次 → 重构

关键模式

提取方法

// 之前:长方法
function processOrder(order) {
  // 50 行验证、计算、保存、发送邮件...
}

// 之后:清晰的职责
function processOrder(order) {
  validateOrder(order);
  const pricing = calculatePricing(order);
  const saved = saveOrder(order, pricing);
  sendConfirmationEmail(saved);
  return saved;
}

替换循环为管道

// 之前
let results = [];
for (let item of items) {
  if (item.inStock) {
    results.push(item.name.toUpperCase());
  }
}

// 之后
const results = items
  .filter(item => item.inStock)
  .map(item => item.name.toUpperCase());

分解条件

// 之前
if (order.total > 1000 && customer.isPremium && allInStock(order)) {
  return 'FREE_SHIPPING';
}

// 之后
function isEligibleForFreeShipping(order, customer) {
  return isLargeOrder(order) &&
         isPremiumCustomer(customer) &&
         allInStock(order);
}

重构反模式

❌ 反模式 问题 ✅ 更好方式
没有测试 没有安全网 先写测试
大爆炸 重写所有 小步骤增量
为了完美 无止境的调整 足够好就继续
过早抽象 模式不清晰 等待三条规则
在功能工作中 混合改动 分开提交

代理集成

// 检测代码异味
const smells = await Task("检测代码异味", {
  source: 'src/services/',
  patterns: ['长方法', '大类', '重复代码']
}, "qe-quality-analyzer");

// 安全重构与测试验证
await Task("验证重构", {
  beforeCommit: 'abc123',
  afterCommit: 'def456',
  expectSameBehavior: true
}, "qe-test-executor");

代理协调提示

内存命名空间

aqe/refactoring/
├── smells/*          - 检测到的代码异味
├── suggestions/*     - 重构建议
├── verifications/*   - 行为保持检查
└── history/*         - 重构日志

舰队协调

const refactoringFleet = await FleetManager.coordinate({
  strategy: 'refactoring',
  agents: [
    'qe-quality-analyzer',   // 识别目标
    'qe-test-generator',     // 添加安全测试
    'qe-test-executor',      // 验证行为
    'qe-test-refactorer'     // TDD 重构阶段
  ],
  topology: 'sequential'
});

相关技能


记住

重构不是:

  • 添加功能
  • 修复错误
  • 性能优化
  • 从头重写

重构是:

  • 改进结构
  • 使代码更清晰
  • 减少复杂性
  • 消除重复
  • 不改变行为

始终有测试。始终小步骤。始终保持测试绿色。