A code smell was defined by Martin Fowler as a “surface indication that usually corresponds to a deeper problem in the system”. They are mistakes made during the development of software that should be considered as warning flags to deeper problems.
A Taxonomy of Smells
Mäntylä and Lassenius considered the major code smells and broke them into a number of groupings, a taxonomy that describes the aspects they concern. These are documented below, and each page provides a thorough overview of the issue alongside details of the refactorings that can be applied to correct the issue.