| name | refactor |
| description | Surgical code refactoring to improve maintainability without changing behavior. Covers extracting functions, renaming variables, breaking down god functions, improving type safety, eliminating code smells, and applying design patterns. Less drastic than repo-rebuilder; use for gradual improvements. |
Refactor
Overview
Improve code structure and readability without changing external behavior. Refactoring is gradual evolution, not revolution.
When to Use
- Code is hard to understand or maintain
- Functions/classes are too large
- Code smells need addressing
- Adding features is difficult due to code structure
- User asks "clean up this code", "refactor this", "improve this"
Refactoring Principles
The Golden Rules
- Behavior is preserved — Refactoring doesn't change what code does
- Small steps — Make tiny changes, test after each
- Version control — Commit before and after each safe state
- Tests are essential — Without tests, you're editing, not refactoring
- One thing at a time — Don't mix refactoring with features
When NOT to Refactor
- Code that works and won't change again
- Critical production code without tests (add tests first)
- Under a tight deadline
- "Just because" — need a clear purpose
Safe Refactoring Process
1. PREPARE
- Ensure tests exist (write them if missing)
- Commit current state
- Create feature branch
2. IDENTIFY
- Find the code smell to address
- Understand what the code does
- Plan the refactoring
3. REFACTOR (small steps)
- Make one small change
- Run tests
- Commit if tests pass
- Repeat
4. VERIFY
- All tests pass
- Manual testing if needed
- Performance unchanged or improved
5. CLEAN UP
- Update comments
- Update documentation
- Final commit
Refactoring Checklist
Code Quality
Structure
Type Safety
Testing
References
For detailed code smells catalog (10 patterns with examples), design patterns (Strategy, Chain of Responsibility), extract method examples, type safety introduction, and the complete refactoring operations table, see:
references/code-smells-catalog.md