Smell |
Common Refactorings |
|---|---|
Alternative Classes with Different Interfaces (83) |
Change Function Declaration (124), Move Function (198), Extract Superclass (375) |
Comments (84) |
Extract Function (106), Change Function Declaration (124), Introduce Assertion (302) |
Data Class (83) |
Encapsulate Record (162), Remove Setting Method (331), Move Function (198), Extract Function (106), Split Phase (154) |
Data Clumps (78) |
Extract Class (182), Introduce Parameter Object (140), Preserve Whole Object (319) |
Divergent Change (76) |
Split Phase (154), Move Function (198), Extract Function (106), Extract Class (182) |
Duplicated Code (72) |
Extract Function (106), Slide Statements (223), Pull Up Method (350) |
Feature Envy (77) |
|
Global Data (74) |
Encapsulate Variable (132) |
Insider Trading (82) |
Move Function (198), Move Field (207), Hide Delegate (189), Replace Subclass with Delegate (381), Replace Superclass with Delegate (399) |
Large Class (82) |
Extract Class (182), Extract Superclass (375), Replace Type Code with Subclasses (362) |
Lazy Element (80) |
Inline Function (115), Inline Class (186), Collapse Hierarchy (380) |
Long Function (73) |
Extract Function (106), Replace Temp with Query (178), Introduce Parameter Object (140), Preserve Whole Object (319), Replace Function with Command (337), Decompose Conditional (260), Replace Conditional with Polymorphism (272), Split Loop (227) |
Long Parameter List (74) |
Replace Parameter with Query (324), Preserve Whole Object (319), Introduce Parameter Object (140), Remove Flag Argument (314), Combine Functions into Class (144) |
Loops (79) |
Replace Loop with Pipeline (231) |
Message Chains (81) |
Hide Delegate (189), Extract Function (106), Move Function (198) |
Middle Man (81) |
Remove Middle Man (192), Inline Function (115), Replace Superclass with Delegate (399), Replace Subclass with Delegate (381) |
Mutable Data (75) |
Encapsulate Variable (132), Split Variable (240), Slide Statements (223), Extract Function (106), Separate Query from Modifier (306), Remove Setting Method (331), Replace Derived Variable with Query (248), Combine Functions into Class (144), Combine Functions into Transform (149), Change Reference to Value (252) |
Mysterious Name (72) |
Change Function Declaration (124), Rename Variable (137), Rename Field (244) |
Primitive Obsession (78) |
Replace Primitive with Object (174), Replace Type Code with Subclasses (362), Replace Conditional with Polymorphism (272), Extract Class (182), Introduce Parameter Object (140) |
Refused Bequest (83) |
Push Down Method (359), Push Down Field (361), Replace Subclass with Delegate (381), Replace Superclass with Delegate (399) |
Repeated Switches (79) |
Replace Conditional with Polymorphism (272) |
Shotgun Surgery (76) |
Move Function (198), Move Field (207), Combine Functions into Class (144), Combine Functions into Transform (149), Split Phase (154), Inline Function (115), Inline Class (186) |
Speculative Generality (80) |
Collapse Hierarchy (380), Inline Function (115), Inline Class (186), Change Function Declaration (124), Remove Dead Code (237) |
Temporary Field (80) |
Extract Class (182), Move Function (198), Introduce Special Case (289) |