Understanding code smells in Elixir functional language

被引:1
|
作者
Vegi, Lucas Francisco da Matta [1 ]
Valente, Marco Tulio [1 ]
机构
[1] Univ Fed Minas Gerais, Dept Comp Sci, Belo Horizonte, Brazil
关键词
Code smells; Elixir; Functional programming; Grey literature; Mining software repositories; GitHub; BAD;
D O I
10.1007/s10664-023-10343-6
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Elixir is a functional programming language created in 2012, whose popularity is growing in the industry. Despite this fact, and to the best of our knowledge, there are few works in the literature focused on studying the internal quality of systems implemented with this language. In a preliminary and previous study, we conducted a grey literature review to provide an initial list of Elixir-specific code smells. Aiming to expand the results of this preliminary study, in this work we use a mixed methodology, based on the interaction with the Elixir developer community and on the mining of issues, commits, pull requests, and the source code in GitHub repositories to prospect and document new code smells for this language. As a result, we propose a catalog composed of 35 code smells, 23 of them are new and specific to Elixir, and 12 of them are traditional code smells, as cataloged by Fowler and Beck, which also affect Elixir systems. We validated this catalog by conducting a survey with 181 experienced Elixir developers from 37 countries and all continents. In this survey, we assessed the levels of relevance and prevalence of each smell in the catalog. We show that most smells in Elixir have relevance levels capable of impacting the readability, maintainability, and evolution of Elixir systems. Furthermore, most of the smells are not uncommon in production code. Our results have practical implications related to the prevention and removal of code smells in Elixir.
引用
收藏
页数:32
相关论文
共 50 条
  • [1] Understanding code smells in Elixir functional language
    Lucas Francisco da Matta Vegi
    Marco Tulio Valente
    [J]. Empirical Software Engineering, 2023, 28
  • [2] Code Smells in Elixir: Early Results from a Grey Literature Review
    da Matta Vegi, Lucas Francisco
    Valente, Marco Tulio
    [J]. 30TH IEEE/ACM INTERNATIONAL CONFERENCE ON PROGRAM COMPREHENSION (ICPC 2022), 2022, : 580 - 584
  • [3] Understanding Code Smells in Android Applications
    Mannan, Umme Ayda
    Ahmed, Iftekhar
    Almurshed, Rana Abdullah M.
    Dig, Danny
    Jensen, Carlos
    [J]. 2016 IEEE/ACM INTERNATIONAL CONFERENCE ON MOBILE SOFTWARE ENGINEERING AND SYSTEMS (MOBILESOFT 2016), 2016, : 225 - 236
  • [4] Understanding the Evolution of Code Smells by Observing Code Smell Clusters
    Tahmid, Ahmad
    Nahar, Nadia
    Sakib, Kazi
    [J]. 2016 IEEE 23RD INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION, AND REENGINEERING (SANER), VOL 4, 2016, : 8 - 11
  • [5] Code Smells for Multi-language Systems
    Abidi, Mouna
    Grichi, Manel
    Khomh, Foutse
    Gueheneuc, Yann-Gael
    [J]. PROCEEDINGS OF THE 24TH EUROPEAN CONFERENCE ON PATTERN LANGUAGES OF PROGRAMS (EUROPLOP 2019), 2019,
  • [6] Bash in theWild: Language Usage, Code Smells, and Bugs
    Dong, Yiwen
    Li, Zheyang
    Tian, Yongqiang
    Sun, Chengnian
    Godfrey, Michael W.
    Nagappan, Meiyappan
    [J]. ACM TRANSACTIONS ON SOFTWARE ENGINEERING AND METHODOLOGY, 2023, 32 (01)
  • [7] Code Smells in Infrastructure as Code
    Schwarz, Julian
    Steffens, Andreas
    Lichter, Horst
    [J]. 2018 11TH INTERNATIONAL CONFERENCE ON THE QUALITY OF INFORMATION AND COMMUNICATIONS TECHNOLOGY (QUATIC), 2018, : 220 - 228
  • [8] On Finding Model Smells Based on Code Smells
    Eessaar, Erki
    Kaosaar, Ege
    [J]. SOFTWARE ENGINEERING AND ALGORITHMS IN INTELLIGENT SYSTEMS, 2019, 763 : 269 - 281
  • [9] Survey on Code Smells
    Tian Y.-C.
    Li K.-J.
    Wang T.-M.
    Jiao Q.-Q.
    Li G.-J.
    Zhang Y.-X.
    Liu H.
    [J]. Ruan Jian Xue Bao/Journal of Software, 2023, 34 (01): : 150 - 170
  • [10] How Do Community Smells Influence Code Smells?
    Palomba, Fabio
    Tamburri, Damian A.
    Serebrenik, Alexander
    Zaidman, Andy
    Fontana, Francesca Arcelli
    Oliveto, Rocco
    [J]. PROCEEDINGS 2018 IEEE/ACM 40TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING - COMPANION (ICSE-COMPANION, 2018, : 240 - 241