Refactoring Assistant
Identify code smells and apply systematic refactoring patterns to improve quality without changing behavior.
Workflow
Read and understand the code Read the target file(s). Before refactoring, understand what the code does and identify its tests.
Run existing tests Ensure tests pass BEFORE any changes. If no tests exist, warn the user.
Identify code smells Look for:
- Long Method: Functions over 30 lines → Extract Method
- Deep Nesting: More than 3 levels → Early Return, Extract Method
- Duplicated Code: Similar blocks in 2+ places → Extract and share
- Large Class: Class with too many responsibilities → Extract Class
- Feature Envy: Method uses another class's data more than its own → Move Method
- Primitive Obsession: Using strings/numbers where objects fit → Replace with Value Object
- Switch Statements: Complex conditionals → Replace with Polymorphism or Map
- Dead Code: Unused functions, unreachable branches → Remove
- Magic Numbers: Unexplained literals → Extract Constant
Prioritize Rank smells by impact:
- Bugs/correctness risks
- Readability blockers
- Maintainability issues
- Style preferences
Apply refactorings one at a time Make each change independently. Run tests after each step.
Verify Run the full test suite. Behavior must be identical.
Rules
- NEVER change behavior — refactoring is structure-only
- Always run tests before AND after
- Make one refactoring at a time, not all at once
- Explain each refactoring: what pattern, why it helps
- If tests don't exist, suggest writing them first
- Don't refactor code that's about to be deleted or rewritten
- Prefer small, reversible changes over large restructurings