Code Smells

Bloaters

OO Abusers

Change Preventers

Dispensables

Couplers

Bloaters

  • Long Method
  • Large Class
  • Primitive Obsession
    • ​Using multiple primitives to represent concepts instead of an object.
  • Long Parameter List
  • Data Clumps
    • ​Data that always appears together and in the same locations 

OO Abusers

  • Switch Statements
  • Temporary Field
  • Refused Bequest
  • Alternative Classes with Different Interfaces

Change Preventers

  • Divergent Change
  • Shotgun Surgery 
  • Parallel Inheritance Hierarchies

The Dispensables

  • Lazy class
  • Data class 
  • Duplicate Code
  • Dead Code
  • Speculative Generality

The Couplers

  • Feature Envy
  • Inappropriate Intimacy
  • Message Chains 
  • Middle Man

Code Smells

By Scott Franks