6 Star 14 Fork 8

Gitee 极速下载 / raylib

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/raysan5/raylib
克隆/下载
CONVENTIONS.md 3.33 KB
一键复制 编辑 原始数据 按行查看 历史

C Coding Style Conventions

Here it 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
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:

  • ALWAYS initialize all defined variables.
  • Do not use TABS, use 4 spaces instead.
  • Avoid trailing spaces, please, avoid them
  • Control flow statements always are followed by a space:
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;
}
  • All conditions checks are always between parenthesis but not boolean values:
if ((value > 1) && (value < 50) && valueActive)
{

}
  • When dealing with braces or curly brackets, open-close them in aligned mode:
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.

Files and Directories Naming Conventions

  • 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!

Games/Examples Directories Organization Conventions

  • Data files should be organized by context and usage in the game, think about the loading requirements for data and put all the resources that need to be loaded at the same time together.
  • Use descriptive names for the files, it would be perfect if just reading the name of the file, it was possible to know what is that file and where fits in the game.
  • Here it is an example, note that some resources require to be loaded all at once while other require to be loaded only at initialization (gui, font).
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
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C/C++
1
https://gitee.com/mirrors/raylib.git
git@gitee.com:mirrors/raylib.git
mirrors
raylib
raylib
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891