Comments (5)
Nested modules are not that common, so it's hard to say if there's an accepted style. In general, they would be well-placed after any defstruct
and any @type
definitions, but before the parent module's functions.
Here's an example from the standard library: https://github.com/elixir-lang/elixir/blob/9b6ec7bae79ececfb9ed481c780febb6a5b293e8/lib/elixir/lib/version.ex#L109
from elixir_style_guide.
Sounds fine to me!
I use it a lot for structs but I notice a project like HTTPoison defines them in the same file but outside of the module. Do you think that style is more common? I assume not so much that it should be recommended in the style guide instead of nesting.
Please let me know if I should submit a PR with the nested defmodule
addition.
from elixir_style_guide.
This guide has already settled on a preference for one module per file, which would suggest nesting modules rather than defining them one after the other as HTTPoison does.
It's hard to recommend a precise location for nested defmodule
since there aren't many examples to go on. We can agree it should go after defstruct
but before any functions. If forced to choose, I would include it in item xiii, as "defmacro
, defmodule
, defguard
, def
, etc." and place defmodule
after defmacro
, since everything above that seems more like the module's preamble, and everything after that the real working code.
What do you think?
from elixir_style_guide.
Sounds reasonable
from elixir_style_guide.
A PR would be welcome on this!
from elixir_style_guide.
Related Issues (20)
- More guidance for indenting, aligning in case statements. HOT 3
- Update rules to follow the new Elixir code formatter
- Module naming with singular vs plural parent directory HOT 1
- 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
- Macro calls placement in a module HOT 1
- Naming: Modules HOT 1
- Clarification on multiline defs HOT 3
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.