diff options
author | Pieter Wuille <pieter.wuille@gmail.com> | 2014-07-09 18:17:23 +0200 |
---|---|---|
committer | Pieter Wuille <pieter.wuille@gmail.com> | 2014-07-28 22:08:13 +0200 |
commit | 2887bffcfdc138f53c60091ab2906790971c9af5 (patch) | |
tree | 7b29f1b4f629c51522a95aa77726bff3e6ff1ac3 /doc/coding.md | |
parent | f9de17ec2f3e22fe9d96557e328af836a3590660 (diff) |
Update coding style and add .clang-format
Diffstat (limited to 'doc/coding.md')
-rw-r--r-- | doc/coding.md | 76 |
1 files changed, 31 insertions, 45 deletions
diff --git a/doc/coding.md b/doc/coding.md index 2f332e92f0..ceed8c18b4 100644 --- a/doc/coding.md +++ b/doc/coding.md @@ -1,29 +1,17 @@ Coding ==================== -Please be consistent with the existing coding style. - -Block style: -```c++ - bool Function(char* psz, int n) - { - // Comment summarising what this section of code does - for (int i = 0; i < n; i++) - { - // When something fails, return early - if (!Something()) - return false; - ... - } - - // Success return is usually at the end - return true; - } -``` -- ANSI/Allman block style -- 4 space indenting, no tabs -- No extra spaces inside parenthesis; please don't do ( this ) -- No space after function names, one space after if, for and while +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 +a single style, so please use it in new code. Old code will be converted +gradually. +- Basic rules specified in src/.clang-format. Use a recent clang-format-3.5 to format automatically. + - Braces on new lines for namespaces, classes, functions, methods. + - Braces on the same line for everything else. + - 4 space indentation (no tabs) for every block except namespaces. + - No indentation for public/protected/private or for namespaces. + - No extra spaces inside parenthesis; don't do ( this ) + - No space after function names; one space after if, for and while. - Includes need to be ordered alphabetically, separate own and foreign headers with a new-line (example key.cpp): ```c++ #include "key.h" @@ -38,31 +26,29 @@ Block style: class CAlpha; class CBeta; ``` -- When using namespace keyword use the following form: -```c++ -namespace Foo { -... +Block style example: +```c++ +namespace foo +{ +class Class +{ + bool Function(char* psz, int n) + { + // Comment summarising what this section of code does + for (int i = 0; i < n; i++) { + // When something fails, return early + if (!Something()) + return false; + ... + } -} // Foo + // Success return is usually at the end + return true; + } +} +} ``` -Variable names begin with the type in lowercase, like nSomeVariable. -Please don't put the first word of the variable name in lowercase like -someVariable. - -Common types: - - n integer number: short, unsigned short, int, unsigned int, int64, uint64, sometimes char if used as a number - d double, float - f flag - hash uint256 - p pointer or array, one p for each level of indirection - psz pointer to null terminated string - str string object - v vector or similar list objects - map map or multimap - set set or multiset - bn CBigNum Doxygen comments ----------------- |