From e0d6e609e33799e1f2ac3ef4cd291ffbde75b03d Mon Sep 17 00:00:00 2001 From: sledgehammer999 Date: Sun, 16 Nov 2014 17:25:50 +0200 Subject: [PATCH] Documenting the project's coding guidelines. Closes #2091. --- CODING_GUIDELINES.md | 144 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 CODING_GUIDELINES.md diff --git a/CODING_GUIDELINES.md b/CODING_GUIDELINES.md new file mode 100644 index 000000000..502bdc850 --- /dev/null +++ b/CODING_GUIDELINES.md @@ -0,0 +1,144 @@ +All new code must follow the following coding guidelines. +If you make changes in a file that still uses another coding style, make sure that you follow these guidelines for your changes instead. +**Note:** I will now take your head if you forget and use another style. However, most probably the request will be delayed until you fix your coding style. + +### 1. Curly braces ### +#### a. Function blocks, class/struct definitions, namespaces #### +```c++ +int myFunction(int a) +{ +//code +} + +myClass::myClass(int *parent) : m_parent(parent) +{ +//initialiaze +} + +int myClass::myMethod(int a) +{ +//code +} + +class myOtherClass +{ +public: +//code +protected: +//code +private: +//code +}; + +namespace id +{ +//code +} +``` + +#### b. Other code blocks #### +```c++ +if (condition) { +//code +} + +for(int a=0; a0) return; +c = 100/b; +``` + +#### c. Using curly braces for single statement if blocks #### + +However, there are cases where curly braces for single statement if blocks **should** be used. +* If some branch needs braces then all others should use them. Unless you have multiple `else if` in a row and the one needing the braces is only for a very small sub-block of code. +* Another exception would be when we have nested if blocks or generally multiple levels of code that affect code readability. + +Generally it will depend on the particular piece of code and would be determined on how readable that piece of code is. **If in doubt** always use braces if one of the above exceptions applies. + +### 3. Indentation### +4 spaces. + +### 4. File encoding and line endings.### + +UTF-8 and Unix-like line ending (LF). Unless some platform speficic files need other encodings/line endings. + +### 5. Misc.### + +* Line breaks for long lines with operation: + +```c++ +a += "b" + + "c" + + "d"; +``` + +* Space around operations eg `a = b + c` or `a=b+c`: + +Before and after the assignment there should be a space. One exception could be: for loops. +```c++ +for(int a=0; a