Papillon6814

Papillon6814

Do you use formatter in your elixir project?

Hi! I’m wondering if I should use formatter of elixir. I have never used any formatters in past projects.
So do you use formatter? And why do you use it?

Most Liked

dimitarvp

dimitarvp

Why not go all the way? :slight_smile: Have that in your aliases section of mix.exs:

      check: [
        "compile --warnings-as-errors",
        "format --check-formatted",
        "credo --strict",
        "coveralls.html",
        "dialyzer --format short"
      ]

Then just run mix check and voila, you almost have locally running CI.

dimitarvp

dimitarvp

For my Elixir, Rust, JavaScript, JSON and OCaml editing I use formatters even if I don’t like all of their decisions how things should look like.

Truth is, our code will be read by other people so I prefer to be a good citizen.

11
Post #3
John-Goff

John-Goff

I love using the formatter, and specifically format on save in my editor, because it allows me to see if my code is right as it happens. If I save my file and everything snaps into place, I know I did things right. If it doesn’t, I know that I have a syntax error somewhere in the code I just wrote. Saves me from flicking back and forth to the server and my editor.

11
Post #5
Sebb

Sebb

I love tabular code.

This

  defp decode(addr_t(:ind), _dest, data) do
    case data do
      <<0::6, data::bits>>            -> {:t_data_ind, nil, data}
      <<0b01::2, seq::4, data::bits>> -> {:t_data_con, seq, data}
      <<0b1000_0000::8>>              -> {:t_connect, nil, <<>>}
      <<0b1000_0001::8>>              -> {:t_discon, nil, <<>>}
      <<0b11::2, seq::4, 0b10::2>>    -> {:t_ack, seq, <<>>}
      <<0b11::2, seq::4, 0b11::2>>    -> {:t_nak, seq, <<>>}
      _                               -> {:error, :invalid_tpci}
    end
  end

for me, is just way more readable than


  defp decode(addr_t(:ind), _dest, data) do
    case data do
      <<0::6, data::bits>> -> {:t_data_ind, nil, data}
      <<0b01::2, seq::4, data::bits>> -> {:t_data_con, seq, data}
      <<0b1000_0000::8>> -> {:t_connect, nil, <<>>}
      <<0b1000_0001::8>> -> {:t_discon, nil, <<>>}
      <<0b11::2, seq::4, 0b10::2>> -> {:t_ack, seq, <<>>}
      <<0b11::2, seq::4, 0b11::2>> -> {:t_nak, seq, <<>>}
      _ -> {:error, :invalid_tpci}
    end
  end

but I know, that most people don’t like it, so it will never be possible to format Elixir-code like that. And that is a good thing. It’s important to have a common code style everyone can read. So I keep formatting my C files in crazy ways, because in C, everybody complains about your style anyway and there will never be any agreement.

OvermindDL1

OvermindDL1

I still use the formatter even though I really really hate some of the things it does (like no trailing comma’s on multi-line things) just for consistency with what everyone else expects. I do the same with rust’s formatter and C++ formatting via clang and others as well. I may do some slight tweaks in configs (hard tabs instead of spaces because screw 3+width indentations when I’m in a terminal) when possible, but otherwise try to keep it as ‘vanilla’ as I can. It makes it easier for other people to look at and PR to your code.

Where Next?

Popular in Questions Top

pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
JorisKok
I have a server on AWS, and was running a load test using artillery. When looking at the Phoenix dashboard I see the Ports going to 100% ...
New
itssasanka
Hi all, Trying to get some more clarity over utc_datetime and naive_datetime for Ecto: https://hexdocs.pm/ecto/Ecto.Schema.html#module-...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
Kagamiiiii
Student &amp; New to elixir. Nice language. I want to convert a english character, e.g. “a”, which is stored in a variable, to it’s asci...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
mgjohns61585
Could someone help me? I'm making my first elixir program, number guessing game. I can't figure out how to convert the user's guess from ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? https://hexdocs.pm/ecto/Ecto.Repo.h...
New
9mm
I am constructing a JSON object (map) and I need to conditionally set a field. I’m trying to write proper elixir-way code… and I’m at a l...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New

Other popular topics Top

lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 record...
New
Jim
As a follow up to my earlier question: I have the code compiling and running but not getting a successful login from the rest server. ...
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
minhajuddin
I have seen a lot of code which picks the first element from a list using Enum.at(0) instead of List.first. Is there a reason why people ...
New
chrisalley
ExUnit now has describe blocks which is a welcome addition coming from RSpec. In the docs, it states that nested hierarchies of describe ...
New
Patoshizzle
After calling mix ecto.create I get this error: 17:00:32.162 [error] GenServer #PID&lt;0.412.0&gt; terminating ** (Postgrex.Error) FATAL...
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
vrod
I am using the Starship cross-shell prompt – it seems pretty nice, but I get some errors: [WARN] - (starship::utils): Executing command ...
New

We're in Beta

About us Mission Statement