From d4f19736a6fa05109a87702e512f7652d1340e80 Mon Sep 17 00:00:00 2001 From: Yuri Kunde Schlesner Date: Sat, 11 Jul 2015 19:59:50 -0300 Subject: [PATCH] Update style rules with to better match current practice. --- CONTRIBUTING.md | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 906a4bc7d..f2dbdf1a4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -7,19 +7,14 @@ Citra is a brand new project, so we have a great opportunity to keep things clea * Don't ever introduce new external dependencies into Core * Don't use any platform specific code in Core * Use namespaces often +* Avoid the use of C-style casts and instead prefer C++-style `static_cast` and `reinterpret_cast`. Never use `const_cast` or `dynamic_cast` (we build with RTTI disabled). The only exception to this rule is for casting between two numeric types, where C-style casts are encouraged for brevity and readability. ### Naming Rules -* Functions - * PascalCase, "_" may also be used for clarity (e.g. ARM_InitCore) -* Variables - * lower_case_underscored - * Prefix "g_" if global -* Classes - * PascalCase, "_" may also be used for clarity (e.g. OGL_VideoInterface) -* Files/Folders - * lower_case_underscored -* Namespaces - * PascalCase, "_" may also be used for clarity (e.g. ARM_InitCore) +* Functions: `PascalCase` +* Variables: `lower_case_underscored`. Prefix with `g_` if global. +* Classes: `PascalCase` +* Files and Directories: `lower_case_underscored` +* Namespaces: `PascalCase`, `_` may also be used for clarity (e.g. `ARM_InitCore`) ### Indentation/Whitespace Style Follow the indentation/whitespace style shown below. Do not use tabs, use 4-spaces instead. @@ -36,25 +31,25 @@ namespace Example { // Declare globals at the top int g_foo = 0; -char* g_some_pointer; // Notice the position of the * +char* g_some_pointer; // Pointer * and reference & stick to the type name /// A colorful enum. enum SomeEnum { COLOR_RED, ///< The color of fire. COLOR_GREEN, ///< The color of grass. - COLOR_BLUE ///< Not actually the color of water. + COLOR_BLUE, ///< Not actually the color of water. }; /** * Very important struct that does a lot of stuff. - * Note that the asterisks are indented by one space. + * Note that the asterisks are indented by one space to align to the first line. */ struct Position { int x, y; }; -// Use "typename" rather than "class" here, just to be consistent -template +// Use "typename" rather than "class" here +template void FooBar() { int some_array[] = { 5, @@ -72,7 +67,7 @@ void FooBar() { // Comment directly above code when possible if (some_condition) single_statement(); - // Place a single space after the for loop semicolons + // Place a single space after the for loop semicolons, prefer pre-increment for (int i = 0; i != 25; ++i) { // This is how we write loops } @@ -83,6 +78,9 @@ void FooBar() { if (this || condition_takes_up_multiple && lines && like && this || everything || alright || then) { + + // Leave a blank space before the if block body if the condition was continued across + // several lines. } switch (var) { @@ -101,11 +99,7 @@ void FooBar() { break; } - std::vector - you_can_declare, - a_few, - variables, - like_this; + std::vector you_can_declare, a_few, variables, like_this; } }