Part of the book series: Studies in Systems, Decision and Control ((SSDC,volume 462))

Abstract

Context: Code Smells—a concept not fully understood among programmers, crucial to the code quality, and yet unstandardized in the scientific literature. Objective: Goal (#1): To provide a widely accessible Catalog that can perform useful functions both for researchers as a unified data system, allowing immediate information extraction, and for programmers as a knowledge base. Goal (#2): To identify all possible concepts characterized as Code Smells and possible controversies. Goal (#3): To characterize the Code Smells by assigning them appropriate characteristics. Method: We performed a combined search of formally published literature and grey material strictly on Code Smell and related concepts where it might never have been mentioned, along with the term “Code Smell” as a keyword. The results were analyzed and interpreted using the knowledge gathered, classified, and verified for internal consistency. Results: We identified 56 Code Smells, of which 15 are original propositions, along with an online catalog. Each smell was classified according to taxonomy, synonyms, type of problem it causes, relations, etc. In addition, we have found and listed 22 different types of Bad Smells called hierarchies and drew attention to the vague distinction between the Bad Smell concepts and Antipatterns. Conclusion: This work has the potential to raise awareness of how widespread and valuable the concept of Code Smells within the industry is and fill the gaps in the existing scientific literature. It will allow further research to be carried out consciously because access to the accumulated information resource is no longer hidden or difficult. Unified data will allow for better reproducibility of the research, and the subsequent results obtained may be more definitive

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Subscribe and save

Springer+ Basic
EUR 32.99 /Month
  • Get 10 units per month
  • Download Article/Chapter or Ebook
  • 1 Unit = 1 Article or 1 Chapter
  • Cancel anytime
Subscribe now

Buy Now

Chapter
EUR 29.95
Price includes VAT (Germany)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
EUR 181.89
Price includes VAT (Germany)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
EUR 235.39
Price includes VAT (Germany)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free ship** worldwide - see info
Hardcover Book
EUR 235.39
Price includes VAT (Germany)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free ship** worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Similar content being viewed by others

Notes

  1. 1.

    Code Smell Catalog Repository—https://github.com/luzkan/smells/

  2. 2.

    Code Smell Catalog Page—https://luzkan.github.io/smells/.

  3. 3.

    Markdown Syntax—https://www.markdownguide.org/basic-syntax/,

  4. 4.

    Haskell List Comprehension

    https://wiki.haskell.org/List_comprehension

  5. 5.

    Python List Comprehension

    https://docs.python.org/3/tutorial/datastructures.html

References

  1. Lacerda, G., Petrillo, F., Pimenta, M., Guéhéneuc, Y.G.: Code smells and refactoring: a tertiary systematic review of challenges and observations. J. Syst. Softw. 167, 110610 (2020). https://doi.org/10.48550/ar**v.2004.10777

  2. Cartaxo, B., Pinto, G., Soares, S.: Rapid Reviews in Software Engineering, pp. 357–384. Springer International Publishing, Cham (2020)

    Google Scholar 

  3. Mantyla, M., Vanhanen, J., Lassenius, C.: A taxonomy and an initial empirical study of bad smells in code. In: International Conference on Software Maintenance. ICSM 2003. Proceedings., IEEE, 2003, pp. 381–384 (2003). https://doi.org/10.1109/ICSM.2003.1235447

  4. Mäntylä, M.V., Lassenius, C.: A Taxonomy for “Bad Code Smells” (2006). https://web.archive.org/web/20120111101436/, http://www.soberit.hut.fi/mmantyla/BadCodeSmellsTaxonomy.htm

  5. Haque, M.S., Carver, J., Atkison, T.: Causes, impacts, and detection approaches of code smell: a survey. In: Proceedings of the ACMSE 2018 Conference, ACMSE ’18, Association for Computing Machinery, pp. 1–8. New York, NY, USA (2018). https://doi.org/10.1145/3190645.3190697, https://doi.org/10.1145/3190645.3190697

  6. Al-Shaaby, A., Aljamaan, H., Alshayeb, M.: Bad smell detection using machine learning techniques: a systematic literature review. Arabian J. Sci. Eng. 45(4), 2341–2369 (2020). https://doi.org/10.1007/s13369-019-04311-w

  7. Kaur, A.: A systematic literature review on empirical analysis of the relationship between code smells and software quality attributes. Arch. Comput. Methods Eng. 27(4), 1267–1296 (2020). https://doi.org/10.1007/s11831-019-09348-6

  8. Kaur, A., Jain, S., Goel, S., Dhiman, G.: Prioritization of code smells in object-oriented software: a review. Mater. Today: Proc. (2021). https://doi.org/10.1016/j.matpr.2020.11.218

  9. Singh, S., Kaur, S.: A systematic literature review: refactoring for disclosing code smells in object oriented software. Ain Shams Eng. J. 9(4), 2129–2151 (2018). https://doi.org/10.1016/j.asej.2017.03.002

  10. Sabir, F., Palma, F., Rasool, G., Guéhéneuc, Y.-G., Moha, N.: A systematic literature review on the detection of smells and their evolution in object-oriented and service-oriented systems. Softw. Pract. Exp. 49(1), 3–39 (2019). https://doi.org/10.1002/spe.2639

  11. Martin Fowler, K.B.: Bad smells in code. Refactoring: Improving the Design of Existing Code. The Addison-Wesley Object Technology Series. Hit the shelves in mid-June of 1999

    Google Scholar 

  12. Alkharabsheh, K., Crespo, Y., Manso, E., Taboada, J.A.: Software design smell detection: a systematic map** study. Softw. Qual. J. 27(3), 1069–1148 (2019). https://doi.org/10.1007/s11219-018-9424-8

  13. Fokaefs, M., Tsantalis, N., Chatzigeorgiou, A.: JDeodorant: identification and removal of feature envy bad smells. In: 2007 IEEE International Conference on Software Maintenance, IEEE, pp. 519–520 (2007). https://doi.org/10.1109/ICSM.2007.4362679

  14. Lewowski, T., Madeyski, L.: How far are we from reproducible research on code smell detection? a systematic literature review. Inf. Softw. Technol. 144, 106783 (2022). https://doi.org/10.1016/j.infsof.2021.106783, https://www.sciencedirect.com/science/article/pii/S095058492100224X

  15. Moha, N., Gueheneuc, Y.-G., Duchien, L., Le Meur, A.-F.: DECOR: A method for the specification and detection of code and design smells. IEEE Trans. Softw. Eng. 36(1), 20–36 (2010). https://doi.org/10.1109/TSE.2009.50

  16. Santos, J.A.M., Rocha-Junior, J.B., Prates, L.C.L., do Nascimento, R.S., Freitas, M.F., de Mendonça, M.G.: A systematic review on the code smell effect. J. Syst. Softw. 144, 450–477 (2018). https://doi.org/10.1016/j.jss.2018.07.035

  17. Fontana, F.A., Ferme, V., Marino, A., Walter, B., Martenka, P.: Investigating the impact of code smells on system’s quality: an empirical study on systems of different application domains. In: 2013 IEEE International Conference on Software Maintenance, pp. 260–269. IEEE (2013). https://doi.org/10.1109/ICSM.2013.37

  18. Marticorena, R., López, C., Crespo, Y.: Extending a taxonomy of bad code smells with metrics. In: Proceedings of 7th International Workshop on Object-Oriented Reengineering (WOOR), p. 6. Citeseer (2006)

    Google Scholar 

  19. Singjai, A., Simhandl, G., Zdun, U.: On the practitioners’ understanding of coupling smells—a grey literature based grounded-theory study. Inf. Softw. Technol. 134, 106539 (2021). https://doi.org/10.1016/j.infsof.2021.106539

  20. Zhang, M., Baddoo, N., Wernick, P., Hall, T.: Improving the precision of Fowler’s definitions of bad smells. In: 2008 32nd Annual IEEE Software Engineering Workshop, pp. 161–166. IEEE (2008). https://doi.org/10.1109/SEW.2008.26

  21. Kerievsky, J.: Refactoring to Patterns. Pearson Deutschland GmbH (2005)

    Google Scholar 

  22. Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional (2018)

    Google Scholar 

  23. McConnell, S.: Code Complete. Pearson Education (2004)

    Google Scholar 

  24. Smith, S.: Refactoring Fundamentals (accessed: 11.11.2021)) (2013). https://www.pluralsight.com/courses/refactoring-fundamentals

  25. Garcia, J., Popescu, D., Edwards, G., Medvidovic, N.: Toward a catalogue of architectural bad smells. In: International Conference on the Quality of Software Architectures, pp. 146–162. Springer, Berlin (2009). https://doi.org/10.1007/978-3-642-02351-4_10

  26. Suryanarayana, G., Samarthyam, G., Sharma, T.: Refactoring for Software Design Smells. Managing Technical Debt, Morgan Kaufmann (2014)

    Google Scholar 

  27. Sharma, T., Fragkoulis, M., Spinellis, D.: House of cards: code smells in open-source C# repositories. In: ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM), pp. 424–429. IEEE (2017)

    Google Scholar 

  28. Jabrayilzade, E., Gürkan, O., Tüzün, E.: Towards a taxonomy of inline code comment smells. In: 2021 IEEE 21st International Working Conference on Source Code Analysis and Manipulation (SCAM), pp. 131–135 (2021). https://doi.org/10.1109/SCAM52516.2021.00024

  29. Martin, R.C.: Clean Code: A Handbook of Agile Software Craftsmanship. Pearson Education (2008)

    Google Scholar 

  30. Arnaoudova, V., Di Penta, M., Antoniol, G., Guéhéneuc, Y.-G.: A new family of software anti-patterns: linguistic anti-patterns. In: 2013 17th European Conference on Software Maintenance and Reengineering, pp. 187–196. IEEE (2013). https://doi.org/10.1109/CSMR.2013.28

  31. Vetro, A., Ardito, L., Morisio, M.: Definition, implementation and validation of energy code smells: an exploratory study on an embedded system. None (2013)

    Google Scholar 

  32. Smith, C.U., Williams, L.G.: New software performance antipatterns: more ways to shoot yourself in the foot. In: International CMG Conference, pp. 667–674. Citeseer (2002)

    Google Scholar 

  33. Smith, C.U., Williams, L.G.: More new software antipatterns: even more ways to shoot yourself in the foot. In: Computer Measurement Group Conference, pp. 717–725. Citeseer (2003)

    Google Scholar 

  34. Tufano, M., Palomba, F., Bavota, G., Di Penta, M., Oliveto, R., De Lucia, A., Poshyvanyk, D.: An empirical investigation into the nature of test smells. In: Proceedings of the 31st IEEE/ACM International Conference on Automated Software Engineering, pp. 4–15 (2016). https://doi.org/10.1145/2970276.2970340

  35. Arendt, T., Taentzer, G.: UML Model Smells and Model Refactorings in Early Software Development Phases, Universitat Marburg (2010). https://doi.org/10.1002/smr.2154

  36. Doğan, E., Tüzün, E.: Towards a taxonomy of code review smells. Inf. Softw. Technol. 142, 106737 (2022). https://doi.org/10.1016/j.infsof.2021.106737

  37. Palomba, F., Tamburri, D.A., Serebrenik, A., Zaidman, A., Arcelli Fontana, F., Oliveto, R.: Poster: how do community smells influence code smells? In: 2018 IEEE/ACM 40th International Conference on Software Engineering: Companion (ICSE-Companion), pp. 240–241 (2018)

    Google Scholar 

  38. Qamar, K., Sülün, E., Tüzün, E.: Towards a taxonomy of bug tracking process smells: a quantitative analysis. In: 2021 47th Euromicro Conference on Software Engineering and Advanced Applications (SEAA), pp. 138–147. IEEE (2021). https://doi.org/10.1109/SEAA53835.2021.00026

  39. Sharma, T., Fragkoulis, M., Spinellis, D.: Does your configuration code smell? In: 2016 IEEE/ACM 13th Working Conference on Mining Software Repositories (MSR), pp. 189–200. IEEE (2016)

    Google Scholar 

  40. Sharma, T.: Presentation Smells: How Not to Prepare Your Conference Presentation. Tushar Sharma Website (2016). https://www.tusharma.in/presentation-smells.html

  41. Hermans, F., Pinzger, M., Van Deursen, A.: Detecting and visualizing inter-worksheet smells in spreadsheets. In: 2012 34th International Conference on Software Engineering (ICSE), pp. 441–451. IEEE (2012). https://doi.org/10.1109/ICSE.2012.6227171

  42. Karwin, B.: SQL Antipatterns: Avoiding the Pitfalls of Database Programming. Pragmatic Bookshelf (2010)

    Google Scholar 

  43. Almeida, D., Campos, J.C., Saraiva, J., Silva, J.C.: Towards a catalog of usability smells. In: Proceedings of the 30th Annual ACM Symposium on Applied Computing, pp. 175–181 (2015). https://doi.org/10.1145/2695664.2695670

  44. Carette, A., Younes, M.A.A., Hecht, G., Moha, N., Rouvoy, R.: Investigating the energy impact of Android smells. In: 2017 IEEE 24th International Conference on Software Analysis, Evolution and Reengineering (SANER), pp. 115–126. IEEE (2017). https://doi.org/10.1109/SANER.2017.7884614

  45. Ghafari, M., Gadient, P., Nierstrasz, O.: Security smells in android. In: 2017 IEEE 17th International Working Conference on Source Code Analysis and Manipulation (SCAM), pp. 121–130. IEEE (2017). https://doi.org/10.1109/SCAM.2017.24

  46. Stijlaart, M., Zaytsev, V.: Towards a taxonomy of grammar smells. In: Proceedings of the 10th ACM SIGPLAN International Conference on Software Language Engineering, pp. 43–54 (2017). https://doi.org/10.1145/3136014.3136035

  47. Mantyla, M.: Bad Smells in Software—a Taxonomy and an Empirical Study, Ph.D. thesis, Ph.D. thesis, Helsinki University of Technology (2003)

    Google Scholar 

  48. Atwood, J.: Code Smells. Jeff Atwood Website (2006). https://blog.codinghorror.com/code-smells/

  49. Wake, W.C.: Refactoring Workbook, 1st edn. Addison-Wesley Professional (2004)

    Google Scholar 

  50. Yamashita, A., Moonen, L.: Do developers care about code smells? an exploratory survey. In: 2013 20th Working Conference on Reverse Engineering (WCRE), pp. 242–251. IEEE (2013). https://doi.org/10.1109/WCRE.2013.6671299

  51. De Castella, K., Byrne, D., Covington, M.: Unmotivated or motivated to fail? a cross-cultural study of achievement motivation, fear of failure, and student disengagement. J. Educ. Psychol. 105(3), 861 (2013). https://doi.org/10.1037/a0032464

  52. Rowa, K.: Atychiphobia (Fear of Failure), ABC-CLIO (2015)

    Google Scholar 

  53. Chapman, C., Wang, P., Stolee K.T.: Exploring regular expression comprehension. In: 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE), IEEE, pp. 405–416 (2017). https://doi.org/10.1109/ASE.2017.8115653https://doi.org/10.1109/ASE.2017.8115653

  54. Fishtoaster, https://softwareengineering.stackexchange.com/questions/1/comments-are-a-code-smellComments are a code smell, Software Engineering—Stack Exchange, (accessed: 06.04.2022)) (2010). https://softwareengineering.stackexchange.com/questions/1/comments-are-a-code-smell

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Marcel Jerzyk .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2023 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Jerzyk, M., Madeyski, L. (2023). Code Smells: A Comprehensive Online Catalog and Taxonomy. In: Kryvinska, N., Greguš, M., Fedushko, S. (eds) Developments in Information and Knowledge Management Systems for Business Applications. Studies in Systems, Decision and Control, vol 462. Springer, Cham. https://doi.org/10.1007/978-3-031-25695-0_24

Download citation

Publish with us

Policies and ethics

Navigation