gerbal
Ordering Use, Import, Alias, Require?
Is there a recommended ordering of require, use, import, and alias? Does the style guide have anything to say about the preferred ordering of special forms?
Marked As Solved
moxley
Note that the order of some items have been changed:
@moduledoc@behaviouruseimportrequirealias@module_attributedefstruct@type@callback@macrocallback@optional_callbacksdefmacro,defmodule,defguard,def, etc.
Also Liked
gerbal
Nevermind, the styleguide is pretty explicit about this: GitHub - christopheradams/elixir_style_guide: A community driven style guide for Elixir · GitHub
List module attributes and directives in the following order:
- @moduledoc
- @behaviour
- use
- import
- alias
- require
- defstruct
- @type
- @module_attribute
- @callback
- @macrocallback
- @optional_callbacks
Add a blank line between each grouping, and sort the terms (like module names) alphabetically.
LostKobrakai
It won‘t ever do that. One premise of the core formatter is that it won‘t change the underlying AST by applying formatting. That ensures that formatting will never introduce a change in behavior of the code and therefore won‘t introduce unintended bugs. Reordering expressions means changing the AST however.
lud
I wonder if anyone is using the following:
aliasimportrequireuse
So you can just sort the whole thing alphabetically, without empty lines.
An only after that module attributes, including @moduledoc, as in the doc I found quite often useful to be able to reuse another attribute, or even call a remote function.
Last Post!
grossvogel
Folks who would like a more aggressive tool for this might want to look into Styler. It is opinionated and explicitly doesn’t promise that it’ll never break your code, but IME it usually doesn’t and I really do value the automated fix-ups.
As a simple example, sometimes I start writing a pipeline and then realize there’s only one function in it… If I save the file with auto-format enabled in my editor, Styler will automatically un-pipeline the call.
Popular in Questions
Other popular topics
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #deployment
- #library
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #channels
- #elixirconf
- #exunit
- #discussion
- #code-sync
- #javascript
- #podcasts
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #blog-post
- #graphql
- #genstage
- #ai
- #websockets
- #supervisor
- #elixirconf-us
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex









