- Duplicated Code
- In a class: Extract Method
- Sibling classes:
- Extract Method -> Pull Up Method(superclass)
- Extract Method -> Form Template Method
- Extract Class
- Long Method (Comments)
- Extract Method
- Replace Temp with Query
- Introduce Parameter Object/Preserve Whole Object
- Replace Method with Method Object
- Decompose Conditional
- Large Class
- Extract Class
- Extract Subclass
- Extract Interface
- Duplicate Observed Data (GUI class)
- Long Parameter List (Dependency structure)
- Replace Method with Method Object
- Preserve Whole Object
- Introduce Parameter Object
- Divergent Change
- Extract Class (Strategy/Visitor/Self Delegation)
- Shotgun Surgery
- Move Method/ Move Field
- Inline Class
- Feature Envy
- Move Method
- Extract Method -> Move Method
- Data Clumps
- Extract Class
- Introduce Parameter Object/ Preserve Whole Object
- Primitive Obsession
- Replace Data Value with Object
- Replace Type Code with Class/Replace Type Code with Subclass/Replace Type Code with State/Strategy
- Extract Class
- Introduce Parameter Object
- Replace Array with Object
- Switch Statements (Polymorphism)
- Extract Method
- Move Method
- Replace Type Code with Subclass/Replace Type Code with State/Strategy
- Replace Conditional with Polymorphism
- Replace Parameter with Explicit Methods
- Introduce Null Object
- Parallel Inheritance Hierarchies (Shotgun Surgery)
- Move Method
- Move Field
- Lazy Class
- Collapse Hierarchy
- Inline Class
- Speculative Generality
- Collapse Hierarchy (abstract class)
- Inline Class (delegation)
- Remove Parameter
- Rename Method
- Temporary Field
- Extract Class
- Introduce Null Object
- Message Chains (structure of navigation)
- Hide Delegate
- Extract Method
- Move Method
- Middle Man (encapsulation/delegation)
- Remove Middle Man
- Inline Method
- Replace Delegation with Inheritance
- Inappropriate Intimacy
- Move Method/Move Field
- Change Bidirectional Association to Unidirectional
- Extract Class
- Hide Delegate
- Replace Inheritance with Delegation
- Alternative Classes with Different Interfaces
- Rename Method
- Move Method
- Extract Superclass
- Incomplete Library Class
- Introduce Foreign Method
- Introduce Local Extension
- Data Class
- Encapsulation Field
- Encapsulation Collection
- Remove Setting Method
- Move Method
- Extract Method
- Hide Method
- Refused Bequest
- Replace Inheritance with Delegation
- Comments
- Extract Method
- Rename Method
- Introduce Assertion