A catalog of 23 Elixir-specific code smells with examples, refactorings, and treatments to improve code quality.
Elixir Code Smells is a catalog of 23 Elixir-specific anti-patterns that harm code quality, derived from community discussions and grey literature. It documents design-related and low-level concerns smells with examples, refactorings, and treatments to help developers write more maintainable and performant Elixir code.
Elixir developers, software engineers, and teams building production Elixir systems who want to improve code quality, learn common pitfalls, and apply disciplined refactoring strategies.
Unlike generic code smell catalogs, this focuses exclusively on Elixir-specific patterns, providing concrete examples and step-by-step refactoring treatments linked to a companion refactoring catalog for practical improvement.
Catalog of Elixir-specific code smells
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Catalogs 23 smells derived from community discussions and grey literature, focusing on Elixir's unique features like processes and macros, as seen in examples like 'GenServer Envy' and 'Dynamic atom creation'.
Each smell includes step-by-step treatments linked to a companion refactoring catalog, providing practical solutions such as disciplined refactoring sequences for issues like 'Unsupervised process'.
The catalog encourages contributions via GitHub issues and pull requests, with smells like 'Complex extractions in clauses' suggested by the community, ensuring real-world relevance.
Every smell is documented with name, category, problem, example, refactoring, and treatments, making it easy to understand and apply, as demonstrated in the README's clear sections.
It's a manual reference without automated detection or integration with tools like Credo, requiring developers to self-audit code, which can be time-consuming.
Effective use relies on the separate Elixir Refactorings catalog, adding setup complexity and potential versioning issues, as mentioned in the treatments linking.
Derived from grey literature rather than peer-reviewed research, which might lead to subjective or incomplete coverage, as acknowledged in the introduction's reliance on blogs and forums.