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
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
Code Smell Catalog Repository—https://github.com/luzkan/smells/
- 2.
Code Smell Catalog Page—https://luzkan.github.io/smells/.
- 3.
Markdown Syntax—https://www.markdownguide.org/basic-syntax/,
- 4.
Haskell List Comprehension
- 5.
Python List Comprehension
References
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
Cartaxo, B., Pinto, G., Soares, S.: Rapid Reviews in Software Engineering, pp. 357–384. Springer International Publishing, Cham (2020)
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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)
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
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
Kerievsky, J.: Refactoring to Patterns. Pearson Deutschland GmbH (2005)
Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional (2018)
McConnell, S.: Code Complete. Pearson Education (2004)
Smith, S.: Refactoring Fundamentals (accessed: 11.11.2021)) (2013). https://www.pluralsight.com/courses/refactoring-fundamentals
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
Suryanarayana, G., Samarthyam, G., Sharma, T.: Refactoring for Software Design Smells. Managing Technical Debt, Morgan Kaufmann (2014)
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)
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
Martin, R.C.: Clean Code: A Handbook of Agile Software Craftsmanship. Pearson Education (2008)
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
Vetro, A., Ardito, L., Morisio, M.: Definition, implementation and validation of energy code smells: an exploratory study on an embedded system. None (2013)
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)
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)
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
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
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
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)
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
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)
Sharma, T.: Presentation Smells: How Not to Prepare Your Conference Presentation. Tushar Sharma Website (2016). https://www.tusharma.in/presentation-smells.html
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
Karwin, B.: SQL Antipatterns: Avoiding the Pitfalls of Database Programming. Pragmatic Bookshelf (2010)
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
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
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
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
Mantyla, M.: Bad Smells in Software—a Taxonomy and an Empirical Study, Ph.D. thesis, Ph.D. thesis, Helsinki University of Technology (2003)
Atwood, J.: Code Smells. Jeff Atwood Website (2006). https://blog.codinghorror.com/code-smells/
Wake, W.C.: Refactoring Workbook, 1st edn. Addison-Wesley Professional (2004)
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
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
Rowa, K.: Atychiphobia (Fear of Failure), ABC-CLIO (2015)
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
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
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2023 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this chapter
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
DOI: https://doi.org/10.1007/978-3-031-25695-0_24
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-25694-3
Online ISBN: 978-3-031-25695-0
eBook Packages: Intelligent Technologies and RoboticsIntelligent Technologies and Robotics (R0)