mneumann
Module naming of services with multiple versions
I have services that come in different versions and they all have to co-exist, possibly at the same time.
E.g. ServiceA.V1_0 and ServiceA.V1_2.
Would you use underscores in module names to separate major from minor in this case and teach credo to not issue a warning or instead write ServiceA.V10 and ServiceA.V12?
Note that the versions reflect a public specification, so I can’t change that :).
Marked As Solved
dimitarvp
Ultimately what truly matters is if you and/or your team are finding the naming convention intuitive and easy to work with. If so, just tell credo to shut up about this one particular thing.
Also Liked
sodapopcan
D4no0
While using module names for versioning is extremely convenient, as the compiler can ensure their uniqueness, I would personally opt for the variant of placing the versioning as metadata in the module:
defmodule Test do
use ServiceA, version: "1.2"
end
This gives much more flexibility in your versioning convention and doesn’t require you to be careful about how you name the modules.
Last Post!
D4no0
No, I’m not. I suggest you to not define the version in the module name, as you have limited control and tools over management of that.
Instead of having the version as the module name, with a little metaprogramming, you can have it in your module, for example my example can generate a function:
> MyService.__service_version__()
"1.2"
Anyway, if the initial version works, just go for it, as my version implies knowledge of metaprogramming. I just wanted to list an alternative.
Trending in Questions
Other Trending 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
- #elixirconf-us
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #api
- #forms
- #metaprogramming
- #security
- #hex









