Merge #10461: Update style guide
47d8441
Update style guide (Pieter Wuille)
Tree-SHA512: 0b11365f294eeda1ea5c45cf04b3f38435602f61edc0c605e067ed9d17d17c28e9f1dd76bd4fa8a630e9cec8c5103cd2bfe5f6097196761d576913d9180f2ecf
This commit is contained in:
commit
55b72f3880
1 changed files with 34 additions and 11 deletions
|
@ -3,41 +3,64 @@ Developer Notes
|
||||||
|
|
||||||
Various coding styles have been used during the history of the codebase,
|
Various coding styles have been used during the history of the codebase,
|
||||||
and the result is not very consistent. However, we're now trying to converge to
|
and the result is not very consistent. However, we're now trying to converge to
|
||||||
a single style, so please use it in new code. Old code will be converted
|
a single style, which is specified below. When writing patches, favor the new
|
||||||
gradually and you are encouraged to use the provided
|
style over attempting to mimick the surrounding style, except for move-only
|
||||||
[clang-format-diff script](/contrib/devtools/README.md#clang-format-diffpy)
|
commits.
|
||||||
to clean up the patch automatically before submitting a pull request.
|
|
||||||
|
|
||||||
- Basic rules specified in [src/.clang-format](/src/.clang-format).
|
Do not submit patches solely to modify the style of existing code.
|
||||||
|
|
||||||
|
- **Indentation and whitespace rules** as specified in
|
||||||
|
[src/.clang-format](/src/.clang-format). You can use the provided
|
||||||
|
[clang-format-diff script](/contrib/devtools/README.md#clang-format-diffpy)
|
||||||
|
tool to clean up patches automatically before submission.
|
||||||
- Braces on new lines for namespaces, classes, functions, methods.
|
- Braces on new lines for namespaces, classes, functions, methods.
|
||||||
- Braces on the same line for everything else.
|
- Braces on the same line for everything else.
|
||||||
- 4 space indentation (no tabs) for every block except namespaces.
|
- 4 space indentation (no tabs) for every block except namespaces.
|
||||||
- No indentation for `public`/`protected`/`private` or for `namespace`.
|
- No indentation for `public`/`protected`/`private` or for `namespace`.
|
||||||
- No extra spaces inside parenthesis; don't do ( this )
|
- No extra spaces inside parenthesis; don't do ( this )
|
||||||
- No space after function names; one space after `if`, `for` and `while`.
|
- No space after function names; one space after `if`, `for` and `while`.
|
||||||
- If an `if` only has a single-statement then-clause, it can appear
|
- If an `if` only has a single-statement `then`-clause, it can appear
|
||||||
on the same line as the if, without braces. In every other case,
|
on the same line as the `if`, without braces. In every other case,
|
||||||
braces are required, and the then and else clauses must appear
|
braces are required, and the `then` and `else` clauses must appear
|
||||||
correctly indented on a new line.
|
correctly indented on a new line.
|
||||||
|
|
||||||
|
- **Symbol naming conventions**. These are preferred in new code, but are not
|
||||||
|
required when doing so would need changes to significant pieces of existing
|
||||||
|
code.
|
||||||
|
- Variable and namespace names are all lowercase, and may use `_` to
|
||||||
|
separate words.
|
||||||
|
- Class member variables have a `m_` prefix.
|
||||||
|
- Global variables have a `g_` prefix.
|
||||||
|
- Constant names are all uppercase, and use `_` to separate words.
|
||||||
|
- Class names, function names and method names are CamelCase. Do not prefix
|
||||||
|
class names with `C`.
|
||||||
|
|
||||||
|
- **Miscellaneous**
|
||||||
- `++i` is preferred over `i++`.
|
- `++i` is preferred over `i++`.
|
||||||
|
|
||||||
Block style example:
|
Block style example:
|
||||||
```c++
|
```c++
|
||||||
|
int g_count = 0;
|
||||||
|
|
||||||
namespace foo
|
namespace foo
|
||||||
{
|
{
|
||||||
class Class
|
class Class
|
||||||
{
|
{
|
||||||
|
std::string m_name;
|
||||||
|
|
||||||
|
public:
|
||||||
bool Function(const std::string& s, int n)
|
bool Function(const std::string& s, int n)
|
||||||
{
|
{
|
||||||
// Comment summarising what this section of code does
|
// Comment summarising what this section of code does
|
||||||
for (int i = 0; i < n; ++i) {
|
for (int i = 0; i < n; ++i) {
|
||||||
|
int total_sum = 0;
|
||||||
// When something fails, return early
|
// When something fails, return early
|
||||||
if (!Something()) return false;
|
if (!Something()) return false;
|
||||||
...
|
...
|
||||||
if (SomethingElse()) {
|
if (SomethingElse(i)) {
|
||||||
DoMore();
|
total_sum += ComputeSomething(g_count);
|
||||||
} else {
|
} else {
|
||||||
DoLess();
|
DoSomething(m_name, total_sum);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue