refactor-extract-and-isolate
[Code Quality] Extracts methods, classes, or modules to reduce complexity and improve isolation. Use when functions are too long, classes have too many responsibilities, or concerns are mixed.
When & Why to Use This Skill
This Claude skill automates the refactoring process by identifying and extracting methods, classes, and interfaces to improve code quality and maintainability. It focuses on reducing cyclomatic complexity and enforcing the Single Responsibility Principle, making it an essential tool for developers looking to transform legacy code into clean, modular, and testable software architectures.
Use Cases
- Simplifying Monolithic Functions: Automatically break down functions longer than 20 lines or those with deep nesting into smaller, descriptive, and reusable methods.
- Decomposing 'God Classes': Identify classes with excessive responsibilities (over 300 lines) and split them into focused units to improve isolation and reduce technical debt.
- Decoupling for Testability: Extract protocols or interfaces from concrete implementations to facilitate dependency injection and enable easier mocking during unit testing.
- Improving Code Readability: Restructure complex logic blocks into named methods that clearly communicate intent, significantly reducing the cognitive load for future maintenance.
| name | refactor-extract-and-isolate |
|---|---|
| description | "[Code Quality] Extracts methods, classes, or modules to reduce complexity and improve isolation. Use when functions are too long, classes have too many responsibilities, or concerns are mixed." |
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