// the find
lucasvegi/Elixir-Code-Smells
Catalog of Elixir-specific code smells
An academic catalog of 23 Elixir-specific code smells (plus 12 traditional ones) compiled from a grey-literature review and a mining-software-repositories study, each documented with problem description, example code, and refactoring treatments. It's for Elixir developers and teams who want a reference for what 'bad' looks like beyond generic OOP smells — things like GenServer Envy, Agent Obsession, and dynamic atom creation.
Every smell has real before/after Elixir code, not just prose — you can actually see what Agent Obsession or Unsupervised process looks like in practice. It's backed by published research (ICPC'22, EMSE'23 papers included in etc/), so the smells aren't just one author's opinion. There's a companion Elixir-Refactorings repo mapping each smell to concrete, disciplined refactoring steps (piped sequences, not just 'fix it'). Ships as a Livebook so you can run and explore it interactively instead of just reading a README.
It's a reference document, not a tool — no Credo-style static analyzer or mix task to actually flag these smells in your codebase, so adoption is purely manual/educational. Last push was September 2024, over a year stale, and growth now depends on community PRs via issues rather than active curation. Several 'smells' (GenServer Envy, Code organization by process) are genuinely debatable architectural tradeoffs rather than objective bugs, so treating this as a checklist rather than a discussion starter will lead to some bad calls. No versioning or changelog for the catalog itself, so you can't easily tell what's new since you last read it.