What are bad smells?
This refers to any symptom in the source code of a program that possibly indicates a deeper problem.
These symptoms do not mean that the program does not function, but instead this shows weaknesses in design that may be slowing development or increasing risk of bugs or failures in the future.
The bad smells...
- Repetition: Copied, pasted, slightly modified
- Opacity: Bad naming
- Needless Complexity: Components add no direct benefit
- Rigidity: Change in code will need a cascade of changes
- Fragility: Slightest error the system does not usually handle
- Immobility: Design hard to re-use (extensiblility)
- Viscosity: Shortcuts can be made in the code
- Loose/Tight Coupling: Class dependency on each other