raylib coding conventions - raysan5/raylib GitHub Wiki

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:

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:
if ( (value > 1) && (value < 50) && valueActive )
{

}
  • When dealing with curly braces, open-close them in aligned mode, it's more visual for students:
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.