refactoring-patterns

<default_to_action> When refactoring:

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "refactoring-patterns" with this command: npx skills add proffesor-for-testing/agentic-qe/proffesor-for-testing-agentic-qe-refactoring-patterns

Refactoring Patterns

<default_to_action> When refactoring:

  • ENSURE tests pass (never refactor without tests)

  • MAKE small change (one refactoring at a time)

  • RUN tests (must stay green)

  • COMMIT (save progress)

  • REPEAT

Safe Refactoring Cycle:

npm test # Green ✅

Make ONE small change

npm test # Still green ✅ git commit -m "refactor: extract calculateTotal"

Repeat

Code Smells → Refactoring:

Smell Refactoring

Long method (>20 lines) Extract Method

Large class Extract Class

Long parameter list (>3) Introduce Parameter Object

Duplicated code Extract Method/Class

Complex conditional Decompose Conditional

Magic numbers Named Constants

Nested loops Replace Loop with Pipeline

NEVER REFACTOR:

  • Without tests (write tests first)

  • When deadline is tomorrow

  • Code you don't understand

  • Code that works and won't be touched </default_to_action>

Quick Reference Card

Common Refactorings

Pattern Before After

Extract Method 50-line function 5 small functions

Extract Class Class doing 5 things 5 single-purpose classes

Parameter Object fn(a,b,c,d,e,f)

fn(options)

Replace Conditional if (type === 'a') {...}

Polymorphism

Pipeline Nested loops .filter().map().reduce()

The Rule of Three

  • First time → Just do it

  • Second time → Wince and duplicate

  • Third time → Refactor

Key Patterns

Extract Method

// 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; }

Replace Loop with Pipeline

// 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());

Decompose Conditional

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

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

Refactoring Anti-Patterns

❌ Anti-Pattern Problem ✅ Better

Without tests No safety net Write tests first

Big bang Rewrite everything Small incremental steps

For perfection Endless tweaking Good enough, move on

Premature abstraction Pattern not clear yet Wait for Rule of Three

During feature work Mixed changes Separate commits

Agent Integration

// 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 Coordination Hints

Memory Namespace

aqe/refactoring/ ├── smells/* - Detected code smells ├── suggestions/* - Refactoring recommendations ├── verifications/* - Behavior preservation checks └── history/* - Refactoring log

Fleet Coordination

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' });

Related Skills

  • tdd-london-chicago - TDD refactor phase

  • code-review-quality - Review refactored code

  • xp-practices - Collective ownership

Remember

Refactoring is NOT:

  • Adding features

  • Fixing bugs

  • Performance optimization

  • Rewriting from scratch

Refactoring IS:

  • Improving structure

  • Making code clearer

  • Reducing complexity

  • Removing duplication

  • Without changing behavior

Always have tests. Always take small steps. Always keep tests green.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

api-testing-patterns

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

compatibility-testing

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

regression-testing

No summary provided by upstream source.

Repository SourceNeeds Review