Taxonomy of Code Smells
I found this taxonomy of code smells by Mika Mäntylä very interesting. The smells are mostly straight out of Refactoring but the groupings are new:
-
The Bloaters, things that have grown so large that they cannot be effectively handled
- Long Method
- Large Class
- Primitive Obsession
- Long Parameter List
- DataClumps
-
The Object-Orientation Abuser, cases where the solution does not fully exploit the possibilities of object-oriented design.
- Switch Statements
- Temporary Field
- Refused Bequest
- Alternative Classes with Different Interfaces
-
The Change Preventers, things that hinder changing or further developing the software
- Divergent Change
- Shotgun Surgery
- Parallel Inheritance Hierarchies
-
The Dispensables, things that should be removed from source code
- Lazy class
- Data class
- Duplicate Code
- Dead Code
- Speculative Generality
-
The Couplers, cases that increase coupling
- Feature Envy
- Inappropriate Intimacy
- Message Chains
- Middle Man