Code refactoring catalog. An extension skill for architecture-reviewer/performance-analyst that provides Martin Fowler-based refactoring patterns, code smell detection-to-refactoring mapping, SOLID principle violation identification, and complexity measurement criteria. Use when reviewing code structure improvement involving 'refactoring', 'code smells', 'SOLID violations', 'complexity', 'design patterns', 'code quality', etc. Note: direct code modification and security analysis are outside t...
Scanned 5/29/2026
Install via CLI
openskills install sideprojectmate/sideProjectMate---
name: refactoring-catalog
description: "Code refactoring catalog. An extension skill for architecture-reviewer/performance-analyst that provides Martin Fowler-based refactoring patterns, code smell detection-to-refactoring mapping, SOLID principle violation identification, and complexity measurement criteria. Use when reviewing code structure improvement involving 'refactoring', 'code smells', 'SOLID violations', 'complexity', 'design patterns', 'code quality', etc. Note: direct code modification and security analysis are outside the scope of this skill."
---
# Refactoring Catalog — Code Refactoring Catalog
A reference of code smell-to-refactoring mappings, SOLID violation identification, and complexity metrics used by the architecture-reviewer and performance-analyst agents during code structure analysis.
## Target Agents
- `architecture-reviewer` — Applied when suggesting refactoring based on design patterns and SOLID principles
- `performance-analyst` — Applied when suggesting refactoring related to complexity analysis and performance
## Code Smell to Refactoring Mapping
### Size-Related Smells
| Code Smell | Symptoms | Refactoring Technique |
|-----------|----------|----------------------|
| **Long Method** | 20+ lines | Extract Method, Replace Temp with Query |
| **Large Class** | 300+ lines or 10+ fields | Extract Class, Extract Subclass |
| **Long Parameter List** | 4+ parameters | Introduce Parameter Object, Builder Pattern |
| **Data Clumps** | Same field groups repeated | Extract Class |
| **Primitive Obsession** | Domain concepts as primitives | Value Object, Enum |
### Structure-Related Smells
| Code Smell | Symptoms | Refactoring Technique |
|-----------|----------|----------------------|
| **Feature Envy** | Excessive use of another class's data | Move Method |
| **Data Class** | Class with only getters/setters | Move behavior into class |
| **Shotgun Surgery** | One change affects multiple classes | Move Method/Field, Inline Class |
| **Divergent Change** | One class changes for multiple reasons | Extract Class (SRP) |
| **Duplicated Code** | Identical/similar code repeated | Extract Method, Template Method |
| **Middle Man** | Class that only delegates | Remove Middle Man, Inline Class |
| **Inappropriate Intimacy** | Excessive coupling between classes | Move Method/Field, Extract Class |
| **Switch/If Chain** | Long conditional branching | Replace Conditional with Polymorphism, Strategy |
| **Refused Bequest** | Inherited but unused methods | Replace Inheritance with Delegation |
| **Comments** | Complex logic explained by comments | Extract Method (self-documenting code) |
## SOLID Principle Violation Identification
### S — Single Responsibility Principle
| Violation Signal | Identification Criteria | Refactoring |
|-----------------|------------------------|-------------|
| Class name contains "And", "Manager" | Implies multiple responsibilities | Extract Class |
| 2+ reasons to change | "If X changes this class changes, and if Y changes this class also changes" | Separate classes by responsibility |
| Highly diverse imports | Imports DB, HTTP, UI, logging all together | Layer separation |
### O — Open/Closed Principle
| Violation Signal | Identification Criteria | Refactoring |
|-----------------|------------------------|-------------|
| Switch/if modified when adding new types | Existing code modification required | Strategy Pattern, Polymorphism |
| Hardcoded branching | Code added for each new condition | Plugin/Registry pattern |
### L — Liskov Substitution Principle
| Violation Signal | Identification Criteria | Refactoring |
|-----------------|------------------------|-------------|
| Override throws exception in child class | `NotImplementedError`, `UnsupportedOperationException` | Interface segregation, Inheritance to Composition |
| Type checking then casting | `instanceof` / `typeof` branching | Redesign with polymorphism |
### I — Interface Segregation Principle
| Violation Signal | Identification Criteria | Refactoring |
|-----------------|------------------------|-------------|
| Empty interface implementations | `pass`, `{}`, `noop` | Interface segregation |
| "Fat" interface | 10+ methods | Split into Role Interfaces |
### D — Dependency Inversion Principle
| Violation Signal | Identification Criteria | Refactoring |
|-----------------|------------------------|-------------|
| Direct concrete class instantiation | Hardcoded `new ConcreteService()` | Dependency Injection |
| Upper module imports lower module | Business logic directly uses DB library | Interface/Port abstraction |
## Complexity Measurement Criteria
### Cyclomatic Complexity
Branch points (if/else/switch/for/while/catch) + 1
| Score | Complexity | Action |
|-------|-----------|--------|
| 1-5 | Low | Appropriate |
| 6-10 | Medium | Review with care |
| 11-20 | High | Refactoring recommended |
| 21+ | Very high | Refactoring required |
### Cognitive Complexity
Difficulty of human code comprehension. Weight increases with deeper nesting.
| Element | Base Increment | Nesting Bonus |
|---------|---------------|---------------|
| if/else/switch | +1 | +nesting level |
| for/while/do | +1 | +nesting level |
| catch | +1 | +nesting level |
| break/continue to label | +1 | - |
| Logical operator chain (&&, ||) | +1 | - |
| Recursive call | +1 | - |
### Recommended Thresholds
| Metric | Method/Function | Class/File |
|--------|----------------|-----------|
| Lines of code | Under 20 | Under 300 |
| Cyclomatic complexity | 10 or less | - |
| Cognitive complexity | 15 or less | - |
| Parameter count | 4 or less | - |
| Nesting depth | 3 levels or less | - |
| Dependency count | - | 10 or less |
## Design Pattern Application Guide
### Smell to Pattern Mapping
| Problem Situation | Applicable Pattern | Effect |
|------------------|-------------------|--------|
| Behavioral branching via conditionals | **Strategy** | OCP compliance, easy to add new behaviors |
| Complex object creation logic | **Factory Method/Builder** | Encapsulate creation logic |
| Same algorithm skeleton, different details | **Template Method** | Remove duplication, isolate change points |
| Behavior changes based on state | **State** | Remove conditionals, clarify state transitions |
| Event propagation to multiple objects | **Observer** | Loose coupling |
| Integrating incompatible interfaces | **Adapter** | Integration without modifying existing code |
| Simplifying complex subsystems | **Facade** | Interface simplification |
| Dynamically adding features to objects | **Decorator** | Feature extension without inheritance |
## Refactoring Priority Decision
### Impact-Difficulty Matrix
| | Low Difficulty | High Difficulty |
|--|---------------|----------------|
| **High Impact** | Do immediately | Plan then execute |
| **Low Impact** | When time allows | Defer (low cost-benefit) |
### Refactoring Suggestion Format
```
[Severity] Code Smell: [Smell Name]
Location: [File:Line]
Current State: [Problem description]
Refactoring: [Technique name]
Expected Effect: [How it improves]
Estimated Difficulty: [Low/Medium/High]
```
No comments yet. Be the first to comment!