diff --git a/raylib-coding-conventions.md b/raylib-coding-conventions.md new file mode 100644 index 0000000..f4806d0 --- /dev/null +++ b/raylib-coding-conventions.md @@ -0,0 +1,65 @@ +This page list some coding conventions rules I try to follow on raylib C code: + +Code element | Convention | Example +--- | :---: | --- +Macros | ALL_CAPS | `#define MIN(a,b) (((a)<(b))?(a):(b))` +Defines | ALL_CAPS | `#define PLATFORM_DESKTOP` +Constants | lowerCase | `const int maxValue = 8` +Struct | TitleCase | `struct Texture2D` +Struct members |lowerCase | `texture.id` +Enum | TitleCase | `TextureFormat` +Enum members | ALL_CAPS | `PIXELFORMAT_UNCOMPRESSED_R8G8B8` +Functions | TitleCase or prefixTitleCase | `InitWindow()`/`rlLoadTexture()` +Variables | lowerCase | `screenWidth` +Local variables | lowerCase | `playerPosition` +Global variables | lowerCase | `fullscreen` +Operators | value1*value2 | `int product = value*6;` +Operators | value1/value2 | `int division = value/4;` +Operators | value1 + value2 | `int sum = value + 10;` +Operators | value1 - value2 | `int res = value - 5;` +Pointers | MyType *pointer | `Texture2D *array;` +float values | always x.xf | `float value = 10.0f` +Ternary Operator | (condition)? result1 : result2 | `printf("Value is 0: %s", (value == 0)? "yes" : "no");` + +Some other conventions to follow: + + - raylib code does not use TABS, use 4 spaces instead. + + - Control flow statements are always followed by a space: +```c +if (condition) value = 0; + +while (!WindowShouldClose()) +{ + +} + +for (int i = 0; i < NUM_VALUES; i++) printf("%i", i); + +switch (value) +{ + case 0: + { + + } break; + case 2: break; + default: break; +} +``` + - All condition checks are always enclosed in parentheses, with the exception of simple boolean values: +```c +if ( (value > 1) && (value < 50) && valueActive ) +{ + +} +``` + + - When dealing with curly braces, open-close them in aligned mode, it's more visual for students: +```c +void SomeFunction() +{ + // TODO: Do something here! +} +``` + +**When proposing new functions, please try to use a clear naming for function-name and function-parameters. In case of doubt, open an issue for discussion.**