# OSv Coding Style This document describe OSv coding style. ## 1. Indentation and Spacing 1.1 We use 4 spaces for indentation, no tabs. 1.2 switch statements, put the case with same indentation as the switch ``` switch(op) { case 1: i++; break; case 2: case 3: i *=2; break; default: break; ``` 1.3 Avoid multiple statements on the same line: ``` i++; j++; ``` ## 2. Breaking long lines and strings 2.1 Line length should not exceed 80 characters ## 3. Braces 3.1 Always use curly braces for if statement, even if it is a one line if. 3.2 In inline method, you can use the open braces at the same line of the method. ``` int get_age() { return age; } ``` 3.3 In longer method, the opening brace should be at the beginning of the line. ``` void clear() { ..... } ``` ## 4. Naming Convention 4.1 Use all lower snake_case names ## 5. Commenting 5.1 Use the // C++ comment style for normal comment 5.2 When documenting a namespace, class, method or function using Doxygen, use /** */ comments. ## 6. Macros, Enums and RTL 6.1 Avoid Macros when a method would do. Prefer enum and constant to macro. 6.2 Prefer "enum class" to "enum". 6.3 Macro names and enum label should be capitalized. For "enum class", non-capitalized values are fine. ## 7. Functions 7.1 When declaring or defining a function taking no arguments in C++ code, avoid the unnecessary "void" as an argument list. This "void" was only necessary in C to maintain backward-compatibility with pre-1989 prototype-less declarations, but was never needed in C++ code. For example, write: ```C++ void abort() { ``` and not: ```C++ void abort(void) { ``` 7.2 Put no space between function name and the argument list. For example: ```C++ double sqrt(double d) { ``` 7.3 Avoid parantheses around return value "return" is not a function - it doesn't need parantheses. For example: ```C++ return 0; return a + b; ```