𩹠Odeur du code ! Antipattern ! Si le capitaine Haddock Ă©tait dĂ©veloppeur, il abuserait sans doute dâun tel vocabulaire. Mais quâen est-il de la recherche ? Ces notions sont-elles pertinentes, ou juste des caprices de dĂ©veloppeurs ?
đ Jâai rĂ©cupĂ©rĂ© 5 papiers, Ă©crits entre 2009 et 2013, qui en parlent. Pour ĂȘtre dâaccord sur la dĂ©finition, une odeur du code est une indication dâun potentiel problĂšme plus profond, lâantipattern. Fowler, qui a inventĂ© le terme, diffĂ©rencie bien les deux. Lâantipattern est une mauvaise solution clairement identifiĂ©e. Lâodeur est un indice, ne menant pas toujours Ă un antipattern. Et tous les antipatterns ne « sentent » pas, certains ne sont visibles que via une analyse poussĂ©e.
đ Dans la littĂ©rature, les classes porteuses dâodeurs sont en gĂ©nĂ©ral plus dĂ©fectueuses et moins comprĂ©hensibles que les autres.
Cependant, les Ă©tudes se contredisent sur leur rĂ©sistance et leur exposition au changement, qui sâexplique au moins partiellement par leur plus grande taille, une variable mieux corrĂ©lĂ©e que le nombre dâodeurs Ă ces indicateurs.
đŁ Les antipatterns sont moins Ă©tudiĂ©s, mais semblent corrĂ©lĂ©s Ă un plus grand nombre dâerreurs et une plus grande exposition au changement. En dâautres termes, ils changent plus souvent et leurs changements sont plus vĂ©reux que la moyenne.
đ La recherche montre Ă©galement que toutes les odeurs ne se valent pas, certaines sont faiblement corrĂ©lĂ©es Ă des antipatterns, dâautres trĂšs fortement.
âïž En rĂ©sumĂ©, les code smells indiquent bien quelque chose sur la qualitĂ© du code, mais ils ne peuvent pas se passer dâune analyse des dĂ©veloppeurs ! Fowler a vu juste, comme souvent.
SOURCES
D. I. K. SjĂžberg, A. Yamashita, B. C. D. Anda, A. Mockus and T. DybĂ„, âQuantifying the Effect of Code Smells on Maintenance Effort,â in IEEE Transactions on Software Engineering, vol. 39, no. 8, pp. 1144-1156, Aug. 2013, doi: 10.1109/TSE.2012.89.
Steffen M. Olbrich, Daniela S. Cruzes, and Dag I. K. Sjoberg. 2010. Are all code smells harmful? A study of God Classes and Brain Classes in the evolution of three open source systems. In Proceedings of the 2010 IEEE International Conference on Software Maintenance. DOI:10.1109/ICSM.2010.5609564
Bavota, Gabriele & Qusef, Abdallah & Oliveto, Rocco & Lucia, Andrea & Binkley, David. (2012). An empirical analysis of the distribution of unit test smells and their impact on software maintenance. IEEE International Conference on Software Maintenance, ICSM. 56-65. 10.1109/ICSM.2012.6405253
F. Khomh, M. Di Penta and Y. Gueheneuc, « An Exploratory Study of the Impact of Code Smells on Software Change-proneness, » 2009 16th Working Conference on Reverse Engineering, 2009, pp. 75-84, doi: 10.1109/WCRE.2009.28.
Li, Wei and Raed Shatnawi. âAn empirical study of the bad smells and class error probability in the post-release object-oriented system evolution.â J. Syst. Softw. 80 (2007): 1120-1128. DOI:10.1016/j.jss.2006.10.018
Enzo Sandré
DOIs: 10.1109/TSE.2012.89 · 10.1109/ICSM.2012.6405253 · 10.1109/WCRE.2009.28 · 10.1109/ICSM.2010.5609564 · 10.1016/j.jss.2006.10.018