Code conventions: Difference between revisions
From Nasqueron Agora
(→Shell scripts: <code> tag instead of ``, fixed typo) |
m (→Shell scripts) |
||
Line 37: | Line 37: | ||
== Shell scripts == | == Shell scripts == | ||
UNIX agnosticism: | UNIX agnosticism: | ||
* Don't assume absolute path, use <code>#!/usr/bin/env bash<code> and not <code>#!/bin/bash</code> (it could be elsewhere on BSD or Solaris) | * Don't assume absolute path, use <code>#!/usr/bin/env bash</code> and not <code>#!/bin/bash</code> (it could be elsewhere on BSD or Solaris) | ||
* Use `sh` as must as possible, try to avoid <code>bash</code>, document exceptions rationale in your commits | * Use `sh` as must as possible, try to avoid <code>bash</code>, document exceptions rationale in your commits | ||
Revision as of 10:50, 24 May 2017
All languages
- Don't use more complicated constructs like ternary operators
- Keep functions short and simple.
- Define explicitly methods visibility, as several languages have different default values (e.g. private for C# class members, public for PHP methods)
C
If you use ClangFormat, a .clang-format file is available.
PHP
- K&R, 1TBS variant, including for functions
- 4 spaces as indent
- The keywords true, false and null must be in lower case.
- Arrays use short syntax
- Array elements ends with a comma
Python
We follow PEP-8.
Rust
We follow Rust default style, described at https://aturon.github.io/. It's mainly a K&R, 1TBS variant.
Use trailing comma for elements in every struct/impl/etc.
Salt
Whitespaces:
- Indent with two spaces
Files provisioned:
- When you ask to download a file remotely, you need a source hash, pick SHA256 as algo
- Each file provisioned from the Salt repository must contains an header explaining the fact, with the full path in the rOPS repo
BSD and Linux distros compatible states:
- populate the map.jinja file with OS logic (e.g. `dirs` for /etc vs /usr/local/etc)
- when you've a specific set of tasks to do for one OS/distro, it's acceptable to enclose it in a state by an if block
Shell scripts
UNIX agnosticism:
- Don't assume absolute path, use
#!/usr/bin/env bash
and not#!/bin/bash
(it could be elsewhere on BSD or Solaris) - Use `sh` as must as possible, try to avoid
bash
, document exceptions rationale in your commits
Whitespaces:
- One whitespace line between shebang and actual content
- Indent with tabulations
File names:
- We use hyphens (-) as separators, not underscores or camelcase.
- Filename should start by a verb if it performs an action
- Don't use .sh extensions (sometimes you'll see them on Phabricator pastes' titles, but it has been added there, so Phab knows shell syntax highlighting should be used)