Samuel-88
Hello all,
I tried to find what is the correct ordering of public and private functions in a module but I could not find an official answer. Should private functions be grouped together with the public functions that use them or should they be kept alphabetically at the end of the module?
Thanks a lot for any help,
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Documentation
While reading the Scoped Routes section, I noticed that the documentation currently refers to a problem without explainin...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
I recently noticed that Elixir’s Logger defaults its primary log level to :debug when no :logger, :level application configuration is pre...
New
I’m working on a small exercise involving update_in/3, and I came up with this solution:
data = %{
name: "Periodic Table",
category:...
New
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication):
toke...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
Hey, I’m Jesse and I’m the main contributor behind Dexter, a full-featured, lightning-fast Elixir LSP optimized for large codebases. It s...
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
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
Hi everyone!
The first release candidate for the Expert language server project is now available!
We’ve published a press release detai...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
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
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex










Showing Posts 1 to 3- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
al2o3cr
FWIW, the language implementation prefers
defps close to the caller:https://github.com/elixir-lang/elixir/blob/main/lib/elixir/lib/map.ex
Samuel-88
Thanks for your answer.
I tried to find the solution in this doc but I couldn’t: Elixir Style Guide
Maybe there isn’t an official way to do this?
sbuttgereit
I speculate that might be because it’s hard to make an easily documented rule about it.
In many cases, we’re encouraged to write small declarative functions in lieu of in-function conditional/branching logic. This means you may well end up with a bunch of
defpfunctions which serve the conditional needs of a single function and possibly no others. In such a case, keeping them close to where they’re called is very good and not difficult.But other times you might have
defpfunctions which are useful in a number of calling functions. What’s the rule for those? Keep close to the first caller? The last caller? Arguably these utility functions can be justified at the end of the module or even the beginning. I’ll tend to follow the rule that shared private functions like that go after the last caller and the last caller’s specific private functions; I like publicly callable functions to be more front and center so they go first… except for that first case of closely coupled definitions.Anyway, I guess my point is that once you get away from that first case there are varying arguments for placement that can be circumstantial or simply preference based in a way that’s difficult to create an acceptable, pubic style-guide for.