You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.9 KiB
2.9 KiB
C Coding Style Conventions
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 fullscreen = false; |
Constants | lowerCase | const int maxValue = 8; |
Pointers | MyType *pointer | Texture2D *array = NULL; |
float values | always x.xf | float gravity = 10.0f |
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"); |
Other conventions:
- All defined variables are ALWAYS initialized
- Four spaces are used, instead of TABS
- Trailing spaces are always avoided
- Control flow statements are 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 conditions are always between parenthesis, but not boolean values:
if ((value > 1) && (value < 50) && valueActive))
{
}
- Braces and curly brackets always open-close in aligned mode:
void SomeFunction()
{
// TODO: Do something here!
}
Files and Directories Naming Conventions
- Directories are named using
snake_case
:resources/models
,resources/fonts
- Files are named using
snake_case
:main_title.png
,cubicmap.png
,sound.wav
NOTE: Spaces and special characters are always avoided in the files/dir naming!
Games/Examples Directories Organization Conventions
- Resource files are organized by context and usage in the game. Loading requirements for data are also considered (grouping data when required).
- Descriptive names are used for the files, just reading the name of the file it should be possible to know what is that file and where fits in the game.
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
NOTE: Some resources require to be loaded all at once while other require to be loaded only at initialization (gui, font).