Design 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. Unhealthy Inheritance Hierarchy
  57. Unnecessary Abstraction
  58. Unnecessary Hierarchy
  59. Unutilized Abstraction
  60. Visibility of Dependency Graphs
  61. Wide Hierarchy

Home

All rights reserved (c) Tushar Sharma 2017-23.