Here is a list with some of the code conventions used by raylib:
| Code element | Convention | Example |
|---|---|---|
| Defines | ALL_CAPS | #define PLATFORM_DESKTOP |
| Macros | ALL_CAPS | #define MIN(a,b) (((a)<(b))?(a):(b)) |
| Variables | lowerCase | int screenWidth = 0;, float targetFrameTime = 0.016f; |
| Local variables | lowerCase | Vector2 playerPosition = { 0 }; |
| Global variables | lowerCase | bool windowReady = false; |
| Constants | lowerCase | const int maxValue = 8; |
| Pointers | MyType *pointer | Texture2D *array = NULL; |
| float values | always x.xf | float gravity = 10.0f (avoid 10.f) |
| 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; |
| Enum | TitleCase | enum TextureFormat |
| Enum members | ALL_CAPS | PIXELFORMAT_UNCOMPRESSED_R8G8B8 |
| Struct | TitleCase | struct Texture2D, struct Material |
| Struct members | lowerCase | texture.width, color.r |
| Functions | TitleCase | InitWindow(), LoadImageFromMemory() |
| Functions params | lowerCase | width, height |
| Ternary Operator | (condition)? result1 : result2 | printf("Value is 0: %s", (value == 0)? "yes" : "no"); |
Some other conventions to follow:
// This is a comment in raylib or raylib examples
if (condition) value = 0;
while (!WindowShouldClose())
{
}
for (int i = 0; i < NUM_VALUES; i++) printf("%i", i);
// Be careful with the switch formatting!
switch (value)
{
case 0:
{
} break;
case 2: break;
default: break;
}
if ((value > 1) && (value < 50) && valueActive)
{
}
void SomeFunction()
{
// TODO: Do something here!
}
If proposing new functions, please try to use a clear naming for function-name and functions-parameters, in case of doubt, open an issue for discussion.
Directories will be named using snake_case: resources/models, resources/fonts
Files will be named using snake_case: main_title.png, cubicmap.png, sound.wav
NOTE: Avoid any space or special character in the files/dir naming!
resources/audio/fx/long_jump.wav
resources/audio/music/main_theme.ogg
resources/screens/logo/logo.png
resources/screens/title/title.png
resources/screens/gameplay/background.png
resources/characters/player.png
resources/characters/enemy_slime.png
resources/common/font_arial.ttf
resources/common/gui.png