wmnnd
Apparently Credo considers single-clause with statements with an else branch a readability issue. I’m curious, what’s everybody’s opinion on this?
I think with can actually help readability when implementing a function with a “happy path”:
with {:ok, yay} <- something() do
this_is_the_happy_path(yay)
else
{:error, reason} -> handle_error(reason)
end
The alternative is, of course, to use good ol’ case:
case something() do
{:ok, yay} ->
this_is_the_happy_path(yay)
{:error, reason} ->
handle_error(reason)
end
Which option do you find more readable?
Trending in Discussions
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
New
I want to open this thread for you all to discuss and help those who really like Ash but are still hesitant to use it in a real project. ...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
I’m posting this in response to Jose’s recent tweet (Cr. link) :
People are sleeping on Elixir for a coding harness:
Hot-code swappi...
New
It would be helpful to have a list of companies worldwide that hire engineers without prior experience in Elixir. Often, it can be quite ...
New
Anyone running long-lived stateful processes on BEAM? We’re building an AI agent runtime and would love to compare notes.
We’re a small ...
New
This might be a bit disturbing for some but it’s happening - computers running on living human neurons. They’ve made them smart enough t...
New
Other Trending Topics
Hi there! We created Gust: A task orchestrator inspired by Airflow.
For those who have never heard about Aiflow, it’s a Python-based wor...
New
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
Hello everyone. After busy few months I am happy to announce v0.1.0 of Emerge & Solve.
They are GUI (Emerge) and State management (S...
New
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
Aludel - LLM Evaluation Workbench
Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New
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
- #full-time-contract
- #podcasts-by-brainlid
- #ecto-query
- #elixirconf-us
- #blog-post
- #ai
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #hex
- #security
- #metaprogramming











Showing Posts 1 to 7- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
benwilson512
Personal $0.02: For single clauses the case is 100% better because the patterns all line line up and stand out better.
stevensonmt
I would say more like 90% better just because I can appreciate a possible style guide that mandates
withstatements for consistent error handling. So that way you can easily identify functions that can return an error versus those that just return values that trigger conditional flow.AstonJ
I prefer the case as well, it’s much more natural (in the sense that even without knowing programming you would more likely be able to make sense of it)
tomekowal
Funnily enough. The same topic popped in recently when we were upgrading a quite old credo version.
We decided to get rid of the rule.
For me, it depends.
We have a bunch of modules where all the functions are pipelines and only one of them had a single case:
The rule that a single-case
withstatement should always be rewritten tocasedid not make much sense in that scenario. Other than consistency, I always pitch for using the simplest tool for the job. Case is simpler than with.cmo
Yes, if there is no
elseI usewithbut a singlewith/elseshould be acasein my mind.pdgonzalez872
I’ve seen matching in the
successcase work fairly well. So, your:would become:
D4no0
I agree with your case, I would also change credo rules. In my opinion credo is a universal tool, for beginners they should follow guidelines from default config, for advanced users they should tailor the rules for their needs. Credo saved me countless times when I was working with newbies, instead of me personally telling them when to use if or case or when, credo would guide them into a decent style, from there I could explain them the things that credo didn’t cover.