Refactoring Guide
When to Use
Use this skill when refactoring code or improving code structure.
Refactoring Principles
1. Safety First
- •Ensure tests exist before refactoring
- •Make small, incremental changes
- •Commit after each successful step
- •Keep functionality identical
2. Common Refactorings
Extract Method
When: Code block does one thing and can be named
code
Before: Long method with multiple responsibilities After: Small methods with clear names
Extract Variable
When: Complex expression needs explanation
code
Before: if (user.age >= 18 && user.country === 'US' && user.verified) After: const canPurchase = user.age >= 18 && user.country === 'US' && user.verified;
Replace Conditional with Polymorphism
When: Switch/if statements based on type
code
Before: switch(type) { case 'A': ... case 'B': ... }
After: type.process() // Each type implements process()
3. Step-by-Step Process
- •Identify code smell
- •Write characterization tests if missing
- •Apply refactoring
- •Run tests
- •Commit
- •Repeat
Code Smells to Watch
- •Long methods (>20 lines)
- •Long parameter lists (>3 params)
- •Duplicate code
- •Feature envy
- •Data clumps
- •Primitive obsession