diff --git a/doc/coding_guidelines.txt b/doc/coding_guidelines.txt index 079d7c73b0..a95134e9dc 100644 --- a/doc/coding_guidelines.txt +++ b/doc/coding_guidelines.txt @@ -1,130 +1,129 @@ = Pacemaker Coding Guidelines = == Table of Contents == 1. Introduction 2. Formatting Guidelines 3. Naming Conventions 4. vim Settings == Introduction == The purpose of this document is to discuss guidelines about how to write code that will be a part of the Pacemaker project. == Formatting Guidelines == === Whitespace === - Indentation must be 4 spaces, no tabs. - Do not leave trailing whitespace. === Line Length === - Lines should be no longer than 80 characters unless limiting line length significantly impacts readability. === Pointers === - The '*' goes by the variable name, not the type: ``` char *foo; ``` - Use a space before the '*' and after the closing parenthesis in a cast: ``` char *foo = (char *) bar; ``` === Functions === - Put the return type on its own line: - Place the opening brace for a function on the next line: ``` static int foo(void) { ``` - For functions with enough arguments that they must break to the next line, align arguments with the first argument: ``` static int function_name(int bar, const char *a, const char *b, const char *c, const char *d) { ``` - If a function name gets really long, start the arguments on their own line with 8 spaces of indentation: ``` static int really_really_long_function_name_this_is_getting_silly_now( int bar, const char *a, const char *b, const char *c, const char *d) { ``` === Control statements (if, else, while, for, switch) === - Keyword is followed by one space, then left parenthesis witout space, condition, right parenthesis, space, opening bracket on the same line. - "else" and "else if" are on the same line with ending brace and opening brace, separated by space ``` if (condition1) { statement1; } else if (condition2) { statement2; } else { statement3; } ``` - Cases in switch statement have same indentation as switch. Body of cases is indented by one level. Opening brace is on the same line as switch. ``` - switch (expression) - { + switch (expression) { case 0: command0; break; case 1: command1; break; default: command; } ``` === Operators === - Operators have spaces from both sides. Do not rely on operator precedence, use brackets when mixing operators with different priority. - No space after opening bracked and before closing bracket. ``` x = a + b - (c * d); ``` == Naming Conventions == - Public C API calls and type names must begin with an API specific prefix, eg. "crm_", "pe_", "st_", "lrm_". == vim Settings == ```vim " This section contains settings that can be placed in the vimrc file that are " compatible with the Pacemaker coding guidelines. " Whitespace set ts=4 set sw=4 set expandtab let c_space_error=1 ```