整理了一下,有助于对代码进行refatoring。
Smells Within Classes
| smells | refactoring |
| Comments |
|
| Long Method | Extract Method.
|
| Large Class | Extract Class Extract Subclass
|
| Long Parameter List | Replace Parameter with Method Preserve Whole Object Introduce Parameter Object.
|
|
|
|
Smells Between Classes
Smells category | smells | refactoring |
Data |
|
|
| Primitive Obsession | Replace Data Value with Object Replace Type Code with Class Replace Type Code with Subclasses Replace Type Code with State/Strategy.
|
| Data Class |
|
| Data Clump | Extract Class Introduce Parameter Object Preserve Whole Object
|
| Temporary Field | Extract Class Introduce Null Object
|
Inheritance |
|
|
| Refused Bequest | Push Down Method Push Down Field Replace Inheritance with Delegation |
| Inappropriate Intimacy (Subclass Form) | Self Encapsulate Field Form Template Method Replace Inheritance with Delegation |
| Lazy Class | Collapse Hierarchy Inline Class |
Responsibility |
|
|
| Feature Envy | Move Method |
| Inappropriate Intimacy (General Form) | Move Method and Move Field Extract Class and Hide Delegate Change Bidirectional Association to Unidirectional
|
| Message Chains | Extract Method Move Method Hide Delegate |
| Middle Man | Remove Middle Man Replace Delegation with Inheritance |
Accommodating Change |
|
|
| Divergent Change |
|
| Shotgun Surgery |
|
| Parallel Inheritance Hierarchies |
|
| Combinatorial Explosion |
|
Library Classes |
|
|
| Incomplete Library Class |
|
|
|
|