Kent Beck coined the term "code smell" in the popular Refactoring book by Martin Fowler and defined it informally as certain structures in the code that suggest (sometimes they scream for) the possibility of refactoring. Since then, various smells have been reported that impair software quality in one or more ways. I attempt to prepare and present a taxonomy of software smells by cataloging, classifying, and inter-relating smell definitions present in existing literature with their references.
Let's list various definitions of a smell first.
Total documented smells: 279
The taxonomy is generated by a python program that I wrote to generate html pages. I provide smell description as well as corresponding references in a specific format and supply them to the python program. The program generates required html pages with links that inter-relate the generated html pages. I used basic CSS to look the collection of the html files a little better.
This taxonomy is evolving. I plan to add more smells and populate other relevant information such as tool support. If you would like to see something relevant which is currently missing, feel free to offer a pull request. Here is the URL to the open-source repository. You may also contact me at firstname.lastname@example.org.
My sincere thanks to the following contributors: Neil Ernst, Vadim Zaytsev.
Last updated: October 10, 2021
All rights reserved (c) Tushar Sharma 2017-21.