DRY Refactor
Ask the user for the file or directory to refactor. Support multiple files if a directory is provided.
Process
Work through these steps in order, making a separate commit for each extraction:
- •
Extract simple helper methods (strings, calculations, parsing)
- •Identify duplicated logic
- •Extract to focused method with clear name
- •Remove duplicated code immediately after extraction
- •Commit the extraction
- •
Extract complex methods with parameters
- •Find similar code blocks with variations
- •Extract with parameters to handle variations
- •Remove duplicated code immediately after extraction
- •Commit the extraction
- •
Apply design patterns when beneficial
- •Template Method, Strategy, etc. for structural duplication
- •Only when it improves readability/maintainability
- •Avoid over-engineering or premature abstraction
- •Remove duplicated code immediately after extraction
- •Commit the extraction
After EACH extraction:
- •Run tests automatically
- •If tests fail, revert the change immediately
- •If tests pass and using IDE refactoring tool, commit:
. r <description> - •If tests pass but manual refactoring, commit:
^ r <description> - •Remove the now-duplicated code in the same commit
Output
- •If no duplication found, report "No duplication found"
- •Otherwise provide brief summary at end (e.g., "Extracted 4 methods, removed 3 duplicated blocks")
Commit Format
Use Arlo's Commit Notation (ACN):
- •
. r extract saveToDatabase method- IDE refactoring or provably safe - •
^ r extract validation logic- Manual refactoring validated by tests