Refactor: Extract and Isolate
Break down complex code into focused, reusable units.
Extract Method
When to Extract
-
Function > 20 lines
-
Code block has a distinct purpose
-
Same logic repeated
-
Deep nesting (> 3 levels)
Extract Class
When to Extract
-
Class > 300 lines
-
Multiple distinct responsibilities
-
Group of related methods/properties
-
Feature envy
Extract Protocol/Interface
When to Extract
-
Multiple implementations possible
-
Testing requires mocking
-
Dependency inversion needed
Checklist
-
Identify extraction boundary
-
Choose good name for new unit
-
Move code to new location
-
Update references
-
Add tests for new unit
-
Verify original tests pass