文件命名
- 源文件和头文件 :文件名使用小写字母和下划线分隔。例如:
my_source_file.c
和my_header_file.h
。
包含保护
-
头文件应使用包含保护,以防止重复包含。例如:
#ifndef MY_HEADER_FILE_H_
#define MY_HEADER_FILE_H_// 内容
#endif // MY_HEADER_FILE_H_
注释
- 使用
/* ... */
块注释和//
行注释。注释应清晰、简洁,放在代码相关部分的上方或右侧。
缩进和对齐
- 使用2个空格进行缩进。
- 代码块应使用一致的对齐风格。
变量和结构体成员
- 使用驼峰命名法(camelCase),如
myVariable
或myStructMember
。
函数名
- 使用下划线命名法(snake_case),如
my_function_name
。
结构体名称
- 使用首字母大写的驼峰命名法(PascalCase),如
MyStruct
。
枚举
-
枚举类型使用首字母大写的驼峰命名法(PascalCase),如
Color
。 -
枚举成员使用全大写字母和下划线分隔的命名法(UPPER_SNAKE_CASE),如
COLOR_RED
。typedef enum Color {
COLOR_RED,
COLOR_GREEN,
COLOR_BLUE
} Color;
宏定义
- 使用全大写字母和下划线分隔的命名法(UPPER_SNAKE_CASE),如
#define MAX_BUFFER_SIZE 1024
。
常量
- 使用
const
关键字定义常量,而不是使用宏。
函数和参数
- 函数应尽可能短小,并只做一件事。
- 参数名称应清晰明了,使用驼峰命名法(camelCase)。
指针
- 指针声明时将星号靠近变量名,如
int *ptr
。
空间和括号
-
运算符和关键词前后使用空格,括号内不使用空格。
if (a == b) {
func(a, b);
}
错误处理
- 使用明确的错误处理和返回值检查。
文件组织
- 头文件包含依赖声明,源文件包含具体实现。
- 头文件应包含函数声明、宏定义、类型定义等。
头文件依赖
- 头文件应包含必要的依赖头文件。
静态函数
-
非导出的函数应使用
static
关键字。static void helper_function() {
// 实现
}
分割大型项目
- 大型项目应合理分割成多个文件和模块。
在项目开发过程中,按一定的规范编写代码,可以提高代码的可读性、一致性和可维护性。有助于确保代码库的高质量和协作效率。