Code-Smells
|
Duplicated Code |
Long Method |
Large Class |
Long Parameter List |
Divergent Change |
Shotgun Surgery |
Feature Envy |
Data Clumps |
Primitive Obsession |
Switch Statements |
Parallel Inheritance Hierarchies |
Lazy Class |
Speculative Generality |
Temporary Field |
Message Chains |
Middle Man |
Inappropriate Intimacy |
Alternative Classes with Different Interfaces |
Incomplete Library Class |
Data Class |
Refused Request
|
Composing Methods
|
Extract Method |
Inline Method |
Inline Temp |
Replace Temp with Query |
Introduce Explaining Variable |
Split Temporary Variable |
Remove Assignments to Parameters |
Replace Method with Method Object |
Substitute Algorithm
|
Moving Features between Objects
|
Move Method |
Move Field |
Extract Class |
Inline Class |
Hide Delegate |
Remove Middle Man |
Introduce Foreign Method |
Introduce Local Extension
|
Organizing Data
|
Self Encapsulate Field |
Replace Data Value with Object |
Change Value to Reference |
Change Reference to Value |
Replace Array with Object |
Duplicate Observed Data |
Change Unidirectional Association to Bidirectional |
Change Bidirectional Association to Unidirectional |
Replace Magic Number with Symbolic Constant |
Encapsulate Field |
Encapsulate Collection |
Replace Record with Data Class |
Replace Type Code with Class |
Replace Type Code with Subclasses |
Replace Type Code with State/Strategy |
Replace Subclass with Fields
|
Simplifying Conditional Expressions
|
Decompose Conditional |
Consolidate Conditional Expression |
Consolidate Duplicate Conditional Fragments |
Remove Control Flag |
Replace Nested Conditional with Guard Clauses |
Replace Conditional with Polymorphism |
Introduce Null Object |
Introduce Assertion
|
Making Method Calls Simpler
|
Rename Method |
Add Parameter |
Remove Parameter |
Separate Query from Modifier |
Parameterize Method |
Replace Parameter with Explicit Methods |
Replace Parameter with Explicit Methods |
Preserve Whole Object |
Replace Parameter with Methods |
Introduce Parameter Object |
Remove Setting Method |
Hide Method |
Replace Constructor with Factory Method |
Encapsulate Downcast |
Replace Error Code with Exception |
Replace Exception with Test
|
Dealing with Generalization
|
Pull Up Field |
Pull Up Method |
Pull Up Constructor Body |
Push Down Method |
Push Down Field |
Extract Subclass |
Extract Superclass |
Extract Interface |
Collapse Hierarchy |
Form Template Methods |
Replace Inheritance with Delegation |
Replace Delegation with Inheritance
|
Big Refactorings
|
Tease Apart Inheritance |
Convert Procedural Design to Objects |
Separate Domain from Presentation |
Extract Hierarchy
|