Design Smells
Smells
1. Alternative Classes with Different Interfaces
2. Broken Hierarchy
3. Broken Modularization
4. Cut and Paste Programming
5. Cyclic Hierarchy
6. Cyclically-dependent Modularization
7. Data Class
8. Data Clumps
9. Deep Hierarchy
10. Deficient Encapsulation
11. Divergent Change
12. Duplicate Abstraction
13. Feature Envy
14. Functional Decomposition
15. God Class
16. Golden Hammer
17. Hub-like Modularization
18. Imperative Abstraction
19. Inappropriate Intimacy
20. Incomplete Abstraction
21. Incomplete Library Class
22. Inheritance Hierarchies Without Polymorphic Assignments
23. Insufficient Modularization
24. Large Class
25. Lava Flow
26. Lazy Class
27. Leaky Encapsulation
28. List-like Inheritance Hierarchy
29. Message Chains
30. Middle Man
31. Missing Abstraction
32. Missing Encapsulation
33. Missing Hierarchy
34. Multifaceted Abstraction
35. Multipath Hierarchy
36. Obsolete Classes
37. Parallel Inheritance Hierarchies
38. Poltergeist
39. Primitive Obsession
40. Rebellious Hierarchy
41. Refused Bequest
42. Shotgun Surgery
43. Spaghetti Code
44. Speculative Generality
45. Speculative Hierarchy
46. Static Cycles in Dependency Graphs
47. Subclasses Do Not Redefine Methods
48. Swiss Army Knife
49. Switch Statement
50. The Blob
51. Too Deep Inheritance Hierarchy
52. Tree-like Dependency Graph
53. Type Queries
54. Unexploited Encapsulation
55. Unfactored Hierarchy
56. Unnecessary Abstraction
57. Unnecessary Hierarchy
58. Unutilized Abstraction
59. Visibility of Dependency Graphs
60. Wide Hierarchy
Go to Home