When and Why Your Code Starts to Smell Bad
Authors:
- Michele TufanoMTMichele Tufano
- Fabio PalombaFPFabio Palomba
- Gabriele BavotaGBGabriele Bavota
- Rocco OlivetoRORocco Oliveto
- Massimiliano Di PentaMPMassimiliano Di Penta
- Andrea De LuciaALAndrea De Lucia
- Denys PoshyvanykDPDenys Poshyvanyk
Top Cited Papers
- 1 May 2015
- conference paper
- Published by Institute of Electrical and Electronics Engineers (IEEE)
- Vol. 1 (02705257) , 403-414
Abstract
In past and recent years, the issues related to managing technical debt received significant attention by researchers from both industry and academia. There are several factors that contribute to technical debt. One of these is represented by code bad smells, i.e., Symptoms of poor design and implementation choices. While the repercussions of smells on code quality have been empirically assessed, there is still only anecdotal evidence on when and why bad smells are introduced. To fill this gap, we conducted a large empirical study over the change history of 200 open source projects from different software ecosystems and investigated when bad smells are introduced by developers, and the circumstances and reasons behind their introduction. Our study required the development of a strategy to identify smell-introducing commits, the mining of over 0.5M commits, and the manual analysis of 9,164 of them (i.e., Those identified as smell-introducing). Our findings mostly contradict common wisdom stating that smells are being introduced during evolutionary tasks. In the light of our results, we also call for the need to develop a new generation of recommendation systems aimed at properly planning smell refactoring activities.Keywords
This publication has 42 references indexed in Scilit:
- Technical Debt: Showing the Way for Better Transfer of Empirical Results2013
- Competitive Coevolutionary Code-Smells DetectionLecture Notes in Computer Science, 2013
- Don't touch my code!2011
- Towards a better understanding of software evolution: an empirical study on open‐source softwareJournal of Software: Evolution and Process, 2011
- An exploratory study of the impact of antipatterns on class change- and fault-pronenessEmpirical Software Engineering, 2011
- Is it a bug or an enhancement?2008
- Assessing the impact of bad smells using historical information2007
- An empirical study of the bad smells and class error probability in the post-release object-oriented system evolutionJournal of Systems and Software, 2007
- A metrics suite for object oriented designIEEE Transactions on Software Engineering, 1994
- The WyCash portfolio management systemACM SIGPLAN OOPS Messenger, 1992