lucasvegi
With great satisfaction, I announce that my PhD thesis, titled “Code Smells and Refactorings for Elixir,” is now publicly available! All the results and methodological details used in our research over the past three years can be openly accessed at:
Abstract:
Elixir is a modern functional programming language, created in 2012, whose popularity has been growing in the industry. Despite this fact, and to the best of our knowledge, there are few studies in the literature addressing the internal quality of systems implemented with this language. In particular, no study to date has investigated specific code smells or refactorings for Elixir. Therefore, to fill these research gaps, we take inspiration from Fowler’s well-known book on code smells and refactorings to prospect, study, document, and evaluate code smells and refactoring strategies specifically tailored to Elixir. In the first study, we employed a mixed-method approach to catalog 35 code smells, 23 of which are new and specific to Elixir, while 12 are traditional code smells cataloged by Fowler and Beck that also affect code implemented in this language. We validated this catalog by surveying 181 experienced Elixir developers from 37 countries across all continents. In a second study, we also adopted a mixed-method approach, including a systematic literature review, to catalog 82 refactoring strategies compatible with Elixir, 14 of which are novel and specific to this language. All these refactorings were validated through another survey answered by 151 developers from 42 countries. To document the cataloged code smells and refactorings, in addition to structured textual descriptions, we produced code examples representing them. Finally, we conducted a third study where the code smells and refactorings for Elixir were correlated, allowing the definition of practical guidelines on how each code smell can be removed systematically with the help of refactoring strategies. In this final study, we also cataloged five new composite refactorings for Elixir. Overall, the results of this thesis have practical implications for the prevention and removal of code smells in Elixir, as well as the prioritization of understanding and using refactoring strategies for this language.
Enjoy!
Trending in Discussions
Other Trending Topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #ai
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #blog-post
- #elixirconf-us
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #security
- #metaprogramming











Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
AstonJ
Nice! Thanks for all your work on this Lucas!
lucasvegi
I also have to sincerely thank all the members of the community who actively participated and helped this research thrive. In the acknowledgments section of the thesis (in Portuguese), I did not forget any of you!
srcoulombe
Congratulations on finishing your thesis, that’s a huge accomplishment!!!
BartOtten
Thank you so much! Gonna read the whole thing and apply it to my current main project
aloukissas
Amazing thank you for this! Should be great as an input to a custom GPT!
andreaa
I didn’t know you can do that
aloukissas
Oh yeah! I have a custom GPT with all the elixir docs, and other good resources. Docs are dead, long live LLMs!
manhvu
Thank Lucas for sharing! I want to study about this do you have any other link? (I cannot access that link).
AstonJ
Is the page not resolving for you? If so I am getting the same thing here so it might just be a temporary glitch…
manhvu
Site is too lag, but now is ok. I downloaded docs and start reading