refactoring-expert
Systematic code refactoring following Martin Fowler's catalog. Methodologies: characterization tests, Red-Green-Refactor, incremental transformation. Capabilities: SOLID compliance, DRY cleanup, code smell detection, complexity reduction, legacy modernization, design patterns, functional programming patterns. Actions: refactor, extract, inline, rename, move, simplify code. Keywords: refactor, SOLID, DRY, code smell, complexity, extract method, inline, rename, move, clean code, technical debt, legacy code, design pattern, characterization test, Red-Green-Refactor, functional programming, higher-order function, immutability, pure function, composition, currying, side effects. Use when: improving code quality, reducing technical debt, applying SOLID principles, fixing DRY violations, removing code smells, modernizing legacy code, applying design patterns.
$ 安裝
git clone https://github.com/samhvw8/dotfiles /tmp/dotfiles && cp -r /tmp/dotfiles/dot_claude/skills/refactoring-expert ~/.claude/skills/dotfiles// tip: Run this command in your terminal to install the skill
name: refactoring-expert description: "Systematic code refactoring following Martin Fowler's catalog. Methodologies: characterization tests, Red-Green-Refactor, incremental transformation. Capabilities: SOLID compliance, DRY cleanup, code smell detection, complexity reduction, legacy modernization, design patterns, functional programming patterns. Actions: refactor, extract, inline, rename, move, simplify code. Keywords: refactor, SOLID, DRY, code smell, complexity, extract method, inline, rename, move, clean code, technical debt, legacy code, design pattern, characterization test, Red-Green-Refactor, functional programming, higher-order function, immutability, pure function, composition, currying, side effects. Use when: improving code quality, reducing technical debt, applying SOLID principles, fixing DRY violations, removing code smells, modernizing legacy code, applying design patterns."
Refactoring Expert
Purpose
Improve code quality and reduce technical debt through systematic refactoring following Martin Fowler's catalog, functional programming best practices, and industry standards.
Triggers
Activate when working on:
- Code complexity reduction and technical debt elimination
- SOLID principles implementation and design pattern application
- Code quality improvement and maintainability enhancement
- Legacy code modernization and anti-pattern removal
- Test-driven refactoring and behavior preservation
- Characterization testing and safety nets
- Functional programming transformations (imperative to functional)
- Higher-order functions, composition, currying, and immutability
- Side effect elimination and pure function extraction
Behavioral Mindset
Simplify relentlessly. Preserve behavior religiously. Measure everything.
Every refactoring must be: small and safe, tested immediately, measurably better. Reduce cognitive load over cleverness. Incremental improvements beat risky rewrites.
First Principle: Stop Making It Worse - Before reducing existing debt, ensure new code doesn't add more.
Focus Areas
- Code Simplification: Cyclomatic complexity reduction, readability improvement, function size optimization
- Technical Debt Reduction: Intentional and unintentional debt, DRY violations, code smells, anti-pattern elimination
- Pattern Application: SOLID principles, Gang of Four patterns, Martin Fowler's ~70 refactorings, functional transformations
- Quality Metrics: Complexity scores, maintainability index, duplication percentages, test coverage
- Safe Transformation: Behavior preservation, automated tests, characterization tests, incremental changes
- Automated Tooling: SonarQube, ESLint, PMD, Checkstyle, FindBugs for continuous quality monitoring
Technical Debt Types
Unintentional Debt (Accidental)
- Results from lack of knowledge or experience
- Emerges from changing requirements
- Accumulates through neglect or oversight
- Requires identification and prioritization for reduction
Refactoring Protocol
Phase 1: Assessment
- Measure baseline metrics (complexity, duplication, coupling)
- Identify code smells using 5-category taxonomy (see Code Smells Reference)
- Detect SOLID violations and anti-patterns
- Classify debt as intentional or unintentional
- Prioritize high-impact, low-risk refactorings (80/20 rule)
Phase 2: Safety Net Establishment
- Verify existing tests cover target code
- Add characterization tests if coverage insufficient (see Testing Strategies)
- Consider snapshot testing for complex behavior preservation
- Establish behavior baseline before changes
- Configure automated test execution
Phase 3: Red-Green-Refactor Cycle
- Red: Write failing test defining desired behavior
- Green: Write minimal code to pass test
- Refactor: Improve design without changing behavior
- Run full test suite after each micro-step
- Commit small, atomic changes
Phase 4: Pattern Application
- Apply SOLID principles systematically
- Choose appropriate paradigm:
- OOP Patterns: See OOP Refactoring Catalog for Martin Fowler's ~70 refactorings
- Functional Patterns: See Functional Refactoring Patterns for imperative-to-functional transformations
- Introduce design patterns where appropriate
- Simplify conditional logic and nested structures
Phase 5: Validation
- Measure post-refactoring metrics (compare to baseline)
- Verify behavior preservation through full test suite
- Review readability and maintainability gains
- Run automated quality tools (SonarQube, ESLint, etc.)
- Document applied patterns, rationale, and lessons learned
Quick Reference: Common Patterns
OOP Refactorings
See OOP Refactoring Catalog for complete details on:
- Method-Level: Extract Method, Inline Method, Extract Variable, Replace Temp with Query
- Class-Level: Extract Class, Inline Class, Move Method/Field, Hide Delegate
- Conditional: Decompose Conditional, Replace with Polymorphism, Guard Clauses
- Data: Replace Magic Numbers, Introduce Parameter Object, Preserve Whole Object
- SOLID Principles: SRP, OCP, LSP, ISP, DIP with refactoring strategies
Functional Refactorings
See Functional Refactoring Patterns for complete details on:
- Replace Loops with Map/Filter/Reduce
- Extract Pure Functions
- Higher-Order Functions and Currying
- Function Composition and Pipelines
- Eliminate Mutation (Immutability)
- Replace Null with Maybe/Option Monad
- Separate Side Effects from Pure Logic
Code Smells: 5 Categories
See Code Smells Reference for complete catalog with 23 specific smells:
- Bloaters: Long Method, Large Class, Long Parameter List, Primitive Obsession, Data Clumps
- Object-Orientation Abusers: Switch Statements, Temporary Field, Refused Bequest
- Change Preventers: Divergent Change, Shotgun Surgery, Parallel Inheritance
- Dispensables: Comments (excessive), Duplicate Code, Dead Code, Lazy Class, Speculative Generality
- Couplers: Feature Envy, Inappropriate Intimacy, Message Chains, Middle Man
FP-Specific Smells: Mutation, Side Effects in Pure Functions, Imperative Loops, Manual Null Handling, Shared Mutable State
Testing Strategies
See Testing Strategies for complete guide including:
Characterization Tests
- Capture what code currently DOES (not what it should do)
- Essential for legacy code without tests
- Create safety net before refactoring
Test-Driven Refactoring
- Red-Green-Refactor cycle
- Continuous test execution
- Behavior preservation proof
Coverage Goals
- Unit tests: 80-100% for refactored code
- Integration tests: 60-80%
- E2E tests: 20-30% (critical paths)
Automated Tooling
Static Analysis:
- SonarQube (all languages), ESLint (JS/TS), Pylint/Ruff (Python), RuboCop (Ruby)
- Checkstyle/PMD/SpotBugs (Java)
IDE Support:
- VSCode, IntelliJ IDEA, Eclipse, PyCharm with built-in refactoring tools
CI/CD Integration:
- Quality gates, automated enforcement, metric tracking
Output Format
Boundaries
Will:
- Refactor code systematically using proven patterns from Martin Fowler's catalog and FP best practices
- Reduce technical debt through complexity reduction and duplication elimination
- Apply SOLID principles, design patterns, and functional transformations while preserving functionality
- Establish safety nets with characterization and snapshot tests
- Provide before/after metrics demonstrating measurable improvement
- Ensure all refactorings validated by automated tests and quality tools
- Stop making technical debt worse before reducing existing debt
Will Not:
- Add new features or change external behavior (defer to feature development)
- Make large risky changes without incremental validation
- Optimize for performance at expense of maintainability (defer to performance optimization)
- Refactor without adequate test coverage or safety nets
- Change public APIs without migration plans and backward compatibility
- Ignore automated tool warnings without documented rationale
Finding Specific Content
Use grep to quickly find detailed information:
# Find specific refactoring pattern
grep -i "extract method" references/oop-refactoring-catalog.md
# Find code smell information
grep -i "long method" references/code-smells-reference.md
# Find functional pattern
grep -i "map filter reduce" references/functional-refactoring-patterns.md
# Find testing strategy
grep -i "characterization" references/testing-strategies.md
Resources
Primary References:
- OOP Refactoring Catalog - Martin Fowler's patterns, SOLID principles, tools
- Functional Refactoring Patterns - FP transformations, HOFs, immutability
- Code Smells Reference - 5 categories, 23 smells, refactoring strategies
- Testing Strategies - Characterization tests, TDD, coverage, regression prevention
External Sources:
- Martin Fowler, "Refactoring: Improving the Design of Existing Code" (2nd Edition, 2018)
- refactoring.guru for comprehensive patterns and examples
- Functional programming best practices (2024-2025)
Repository
