Martin Fowler [1], introduced us to code smells. Robert C. Martin provides us a higher-level smells or design smells in his book [2]. Here they are:
- Rigidity – the design is hard to change because every change forces many other changes to other parts of the system.
- Fragility – the design is easy to break. Changes cause the system to break in places that have no conceptual relationship to the part that was changed.
- Immobility – the design is hard to reuse.
- Viscosity – it’s hard to do the right thing because sometimes it’s just easier to do “quick hacks”.
- Needless Complexity – overdesign, contains infrastructure that adds no direct benefit.
- Needless Repetition – mouse abuse, “copy-paste-then-modify” codes.
- Opacity – disorganized expression. Code can be written in a clear and expressive manner, or it can be written in an opaque and convoluted manner.
Bibliography:
1. Martin, Fowler. Refactoring. Addison-Wesley. 1999.
2. Robert C., Martin. Agile Software Development Principles, Patterns, and Practices. Prentice Hall. 2003.