Comments (13)
Can somebody elaborate please? Will using MODULE "just" make my code more stable against renaming? (if so, wouldn't @chrismccord 's aliasing defeat the purpose?)
yes. For me, doing a find/replace in a file should my module name change is a worthy tradeoff. Note: I'm fine with __MODULE__
when I just want to grab a reference to it, but I prefer an alias for structs, since you're often passing those around and accepting them as arguments. To me, the alias reads clearer. I'd rather see:
def name(%User{fname: fname, lname: lname}), do: fname <> " " <> lname
than
def name(%__MODULE__{fname: fname, lname: lname}), do: fname <> " " <> lname
from elixir_style_guide.
I sometimes do
alias __MODULE__, as: SomeModule
to guard against renames as well as have a nice looking SomeModule
instead of __MODULE__
in the code.
from elixir_style_guide.
My preference here is an alias:
defmodule SomeNamespace.SomeModuleName do
alias SomeNamespace.SomeModuleName
defstruct name: nil
@type t :: %SomeModuleName{name: String.t}
def name(%SomeModuleName{name: name}), do: name
end
from elixir_style_guide.
You can also make the aliasing more concise: alias __MODULE__
from elixir_style_guide.
Intetresting reasoning. It totally makes sense. If this rule gets to the Styleguide, can this "why?" be included? I think reading the styleguide is good, but also know why those particular rules are useful, can really help adopting (and remembering) them.
from elixir_style_guide.
Hope @josevalim will left his opinion too (:
from elixir_style_guide.
I also adopted this behaviour, so ๐
from elixir_style_guide.
@chrismccord ๐
from elixir_style_guide.
Can somebody elaborate please? Will using MODULE "just" make my code more stable against renaming? (if so, wouldn't @chrismccord 's aliasing defeat the purpose?)
from elixir_style_guide.
Thx @chrismccord, that makes total sense.
from elixir_style_guide.
I like @obrok's suggestion.
from elixir_style_guide.
I'm ๐ on @chrismccord suggestion, it's the one I use regularly in my code.
from elixir_style_guide.
Please check PR #114 and let me know if you think it addresses this issue. It advises using __MODULE__
for module self-references, and recommends using an alias if you desire a clearer, unique name.
from elixir_style_guide.
Related Issues (20)
- camelCase vs PascalCase HOT 3
- Add preference for long args/`when` in methods? HOT 3
- Does the formatter make this obsolete? HOT 3
- Missing a section about maps HOT 5
- @module_attribute should be moved higher in Module attribute ordering HOT 1
- Establishing Guidelines for Maximizing Anonymous Function Readability in Reference to Escaped and Expanded Notations HOT 3
- Suggestion on Module Attribute Ordering HOT 1
- Thoughts on public/private function ordering HOT 4
- Deeply nested one-arity function calls? HOT 2
- new issue
- Placement of defguard? HOT 1
- using pipe with only 2 functions HOT 1
- Pipeline with single pipe operator for common cases like Enum.map/reduce/filter HOT 3
- Nested defmodule HOT 5
- Macro calls placement in a module HOT 1
- Naming: Modules HOT 1
- Clarification on multiline defs HOT 3
- cรณmo utilizamos?
- Racionalfor choice
- Broken Link HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from elixir_style_guide.