forked from shibao/cannery
update style guide
This commit is contained in:
parent
bb4e6954eb
commit
3b0850852e
@ -13,14 +13,14 @@ If you're multilingual, this project can use your translations! Visit
|
|||||||
|
|
||||||
## Style Tips
|
## Style Tips
|
||||||
|
|
||||||
- In order to cut down on code verbosity and readability, please try to use
|
- In order to keep code concise and improve readability, please try to make your
|
||||||
inline `do:` blocks for short functions and make your aliases as short as
|
functions as short as possible while keeping variable names descriptive! For
|
||||||
possible without introducing ambiguity.
|
instance, use inline `do:` blocks for short functions and make your aliases as
|
||||||
|
short as possible without introducing ambiguity.
|
||||||
- I.e. since there's only one `Changeset` in the app, please alias
|
- I.e. since there's only one `Changeset` in the app, please alias
|
||||||
`Changeset.t(Type.t())` instead of using `Ecto.Changeset.t(Long.Type.t())`
|
`Changeset.t(Type.t())` instead of using `Ecto.Changeset.t(Long.Type.t())`
|
||||||
- Use pipelines when possible. If a function only calls a single method, a
|
- Use pipelines when possible. If only calling a single method, a pipeline isn't
|
||||||
pipeline isn't strictly necessary but still encouraged for future
|
strictly necessary but still encouraged for future modification.
|
||||||
modification.
|
|
||||||
- Please add typespecs to your functions! Even your private functions may be
|
- Please add typespecs to your functions! Even your private functions may be
|
||||||
used by others later down the line, and typespecs will be able to help
|
used by others later down the line, and typespecs will be able to help
|
||||||
document your code just a little bit better, and improve the debugging
|
document your code just a little bit better, and improve the debugging
|
||||||
@ -29,7 +29,7 @@ If you're multilingual, this project can use your translations! Visit
|
|||||||
return_type()`. Please use these for generic types, such as `map()` when the
|
return_type()`. Please use these for generic types, such as `map()` when the
|
||||||
input data isn't immediately obvious.
|
input data isn't immediately obvious.
|
||||||
- Please define all typespecs for a function together in one place, instead of
|
- Please define all typespecs for a function together in one place, instead of
|
||||||
each function.
|
each function header.
|
||||||
- When making new models, please take inspiration from the existing models in
|
- When making new models, please take inspiration from the existing models in
|
||||||
regards to layout of sections, typespec design, and formatting.
|
regards to layout of sections, typespec design, and formatting.
|
||||||
- With Elixir convention, for methods that raise on error please name them like
|
- With Elixir convention, for methods that raise on error please name them like
|
||||||
@ -38,6 +38,11 @@ If you're multilingual, this project can use your translations! Visit
|
|||||||
status tuples for other functions like `{:ok, result}` or `{:error,
|
status tuples for other functions like `{:ok, result}` or `{:error,
|
||||||
reason_or_changeset}` instead of just returning `result` or `nil` for easy
|
reason_or_changeset}` instead of just returning `result` or `nil` for easy
|
||||||
pattern matching.
|
pattern matching.
|
||||||
|
- Instead of using the `.` operator, try to use pattern matching instead,
|
||||||
|
especially for function headers. `.` in templates is fine to keep things
|
||||||
|
concise.
|
||||||
|
- Use `Enum` functions over comprehensions whenever possible for clarity.
|
||||||
|
However, comprehensions in templates are fine for legibility.
|
||||||
- When adding text, please use `gettext` macros to enable things to be
|
- When adding text, please use `gettext` macros to enable things to be
|
||||||
translated in the future. After adding `gettext` macros, run `mix format` in
|
translated in the future. After adding `gettext` macros, run `mix format` in
|
||||||
order to add your new text strings to the files in `priv/gettext`.
|
order to add your new text strings to the files in `priv/gettext`.
|
||||||
@ -45,15 +50,17 @@ If you're multilingual, this project can use your translations! Visit
|
|||||||
(informational messages as a result of the user doing an action, i.e. in
|
(informational messages as a result of the user doing an action, i.e. in
|
||||||
flashes), `"actions"` (actions that the user can take), `"emails"`, and
|
flashes), `"actions"` (actions that the user can take), `"emails"`, and
|
||||||
`"errors"`. Using these domains accurately will let translators know which
|
`"errors"`. Using these domains accurately will let translators know which
|
||||||
messages are higher and lower priority. Thank you!
|
translations are higher and lower priority. Thank you!
|
||||||
- Before submitting a PR, please make sure all tests are passing using `mix test`.
|
- Before submitting a PR, please make sure all tests are passing using `mix
|
||||||
|
test`.
|
||||||
|
|
||||||
And as always, thank you!
|
And as always, thank you!
|
||||||
|
|
||||||
# Technical Information
|
# Technical Information
|
||||||
|
|
||||||
- Created using the [Phoenix Framework](https://www.phoenixframework.org)
|
- Created using the [Phoenix Framework](https://www.phoenixframework.org)
|
||||||
- User Registration/Sign in via [`phx_gen_auth`](https://hexdocs.pm/phx_gen_auth/).
|
- User Registration/Sign in via
|
||||||
|
[`phx_gen_auth`](https://hexdocs.pm/phx_gen_auth/).
|
||||||
- `Dockerfile` and example `docker-compose.yml`
|
- `Dockerfile` and example `docker-compose.yml`
|
||||||
- Automatic migrations in `MIX_ENV=prod` or Docker image
|
- Automatic migrations in `MIX_ENV=prod` or Docker image
|
||||||
- JS linting with [standard.js](https://standardjs.com), HEEx linting with
|
- JS linting with [standard.js](https://standardjs.com), HEEx linting with
|
||||||
@ -73,7 +80,9 @@ Check them out!
|
|||||||
which will use the `.tool-versions` file to install the correct versions of
|
which will use the `.tool-versions` file to install the correct versions of
|
||||||
Erlang, Elixir and npm for this project!
|
Erlang, Elixir and npm for this project!
|
||||||
1. Run `mix deps.get` and `mix compile` to fetch all dependencies
|
1. Run `mix deps.get` and `mix compile` to fetch all dependencies
|
||||||
1. Run `mix setup` to initialize your database.
|
1. Run `mix setup` to initialize your database. You can reset your database at
|
||||||
|
any time with `mix ecto.reset`.
|
||||||
|
1. Run migrations with `mix ecto.migrate` or rollback with `mix ecto.rollback`.
|
||||||
1. Run `mix phx.server` to start the development server.
|
1. Run `mix phx.server` to start the development server.
|
||||||
|
|
||||||
# Configuration
|
# Configuration
|
||||||
|
Loading…
Reference in New Issue
Block a user