mcpField
Q
qe-refactoring-patterns

qe-refactoring-patterns

github.com/proffesor-for-testing开发51984 次安装今天更新
代码仓库

关于 qe-refactoring-patterns

面向开发工作的重构模式技能,指导开发者在测试保护下以小步改进代码结构,同时保持行为不变。涵盖常见代码异味及对应重构方式。

主要功能

  1. 01列出常见代码异味与重构
  2. 02强调先有测试再重构
  3. 03指导小步修改与验证
  4. 04提供渐进式重构模式

适用场景

  1. 01拆分过长的方法或大型类
  2. 02消除重复代码
  3. 03简化复杂条件与嵌套循环
  4. 04在功能改动前后保持行为稳定

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill qe-refactoring-patterns

安装后在 Claude Code 中输入/qe-refactoring-patterns确认已加载。

详细介绍

重构模式

<default_to_action> 重构时:

  1. 确保测试通过(绝不在没有测试的情况下重构)
  2. 做小幅修改(一次只进行一项重构)
  3. 运行测试(必须保持通过)
  4. 提交(保存进度)
  5. 重复以上步骤

安全重构循环:

npm test               # Green ✅
# Make ONE small change
npm test               # Still green ✅
git commit -m "refactor: extract calculateTotal"
# Repeat

代码异味 → 重构方式:

异味重构方式
方法过长(>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. 第三次 → 重构

关键模式

提取方法
// Before: Long method
function processOrder(order) {
  // 50 lines of validation, calculation, saving, emailing...
}

// After: Clear responsibilities
function processOrder(order) {
  validateOrder(order);
  const pricing = calculatePricing(order);
  const saved = saveOrder(order, pricing);
  sendConfirmationEmail(saved);
  return saved;
}
将循环替换为管道
// Before
let results = [];
for (let item of items) {
  if (item.inStock) {
    results.push(item.name.toUpperCase());
  }
}

// After
const results = items
  .filter(item => item.inStock)
  .map(item => item.name.toUpperCase());
分解条件表达式
// Before
if (order.total > 1000 && customer.isPremium && allInStock(order)) {
  return 'FREE_SHIPPING';
}

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

重构反模式

❌ 反模式问题✅ 更好的做法
没有测试缺少安全保障先编写测试
一次性大改重写所有内容小步渐进
追求完美无休止地调整做到足够好,然后继续
过早抽象尚未明确模式等到遵循三次原则
开发功能时重构修改混杂分开提交

Agent 集成

// Detect code smells
const smells = await Task("Detect Code Smells", {
  source: 'src/services/',
  patterns: ['long-method', 'large-class', 'duplicate-code']
}, "qe-quality-analyzer");

// Safe refactoring with test verification
await Task("Verify Refactoring", {
  beforeCommit: 'abc123',
  afterCommit: 'def456',
  expectSameBehavior: true
}, "qe-test-executor");

Agent 协作提示

记忆命名空间
aqe/refactoring/
├── smells/*          - Detected code smells
├── suggestions/*     - Refactoring recommendations
├── verifications/*   - Behavior preservation checks
└── history/*         - Refactoring log
集群协作
const refactoringFleet = await FleetManager.coordinate({
  strategy: 'refactoring',
  agents: [
    'qe-quality-analyzer',   // Identify targets
    'qe-test-generator',     // Add safety tests
    'qe-test-executor',      // Verify behavior
    'qe-test-refactorer'     // TDD refactor phase
  ],
  topology: 'sequential'
});

相关技能


请记住

重构不是:

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

重构是:

  • 改善结构
  • 让代码更清晰
  • 降低复杂度
  • 消除重复
  • 不改变行为

始终确保有测试。始终小步前进。始终保持测试通过。

评论

支持 Markdown