关于 qe-refactoring-patterns
面向开发工作的重构模式技能,指导开发者在测试保护下以小步改进代码结构,同时保持行为不变。涵盖常见代码异味及对应重构方式。
主要功能
- 01列出常见代码异味与重构
- 02强调先有测试再重构
- 03指导小步修改与验证
- 04提供渐进式重构模式
适用场景
- 01拆分过长的方法或大型类
- 02消除重复代码
- 03简化复杂条件与嵌套循环
- 04在功能改动前后保持行为稳定
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ proffesor-for-testing/ agentic-qe --skill qe-refactoring-patterns安装后在 Claude Code 中输入/qe-refactoring-patterns确认已加载。
详细介绍
重构模式
<default_to_action> 重构时:
- 确保测试通过(绝不在没有测试的情况下重构)
- 做小幅修改(一次只进行一项重构)
- 运行测试(必须保持通过)
- 提交(保存进度)
- 重复以上步骤
安全重构循环:
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() |
三次原则
- 第一次 → 直接做
- 第二次 → 忍着重复
- 第三次 → 重构
关键模式
提取方法
// 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'
});
相关技能
- tdd-london-chicago - TDD 重构阶段
- code-review-quality - 审查重构后的代码
- xp-practices - 集体所有权
请记住
重构不是:
- 添加功能
- 修复错误
- 优化性能
- 从头重写
重构是:
- 改善结构
- 让代码更清晰
- 降低复杂度
- 消除重复
- 不改变行为
始终确保有测试。始终小步前进。始终保持测试通过。
评论
支持 Markdown