版权说明:此编程规来源于华为LiteOs 编程规范(https://gitee.com/LiteOS/LiteOS/tree/master/),供读者学习参考使用。
总体原则
清晰,易于维护、易于重构
简洁,易于理解,并且易于实现
风格统一,代码整体风格保持统一
通用性,遵循业界通用的编程规范
目录结构
建议将工程按照功能模块划分子目录(可参考LiteOS的功能模块划分),子目录再定义头文件和源文件目录。
命名
使用驼峰风格进行命名,此风格大小写字母混用,不同单词间通过单词首字母大写来分开,具体规则如下:
类型 | 命名风格 | 形式 |
---|---|---|
函数,自定义的类型 | 大驼峰,或带有模块前缀的大驼峰 | AaaBbb, XXX_AaaBbb |
局部变量,函数参数,宏参数,结构体成员,联合体成员 | 小驼峰 | aaaBbb |
全局变量 | 带'g_'前缀的小驼峰 | g_aaaBbb |
宏,枚举值 | 全大写并下划线分割 | AAA_BBB |
内核头文件中防止重复包含的宏变量 | 带'_LOS'前缀和'H'后缀,中间为大写模块名,以下划线分割 | _LOS_MODULE_H |
全局函数、全局变量、宏、类型名、枚举名的命名,应当准确描述并全局唯一
在能够准确表达含义的前提下,局部变量,或结构体、联合体的成员变量,其命名应尽可能简短
LiteOS的对外API使用LOS_Module_Func的方式,如果有宾语采用前置的方式,比如:
LOS_TaskCreate
LOS_SwtmrStart
LOS_SemPend
kernel目录下内部模块间接口使用OsModuleFunc的方式,比如:
OsTaskScan
OsSwtmrStart
arch目录需要给上层模块提供Low Level接口,这部分接口采用ArchModuleFunc的方式。其他情况可采用ModuleFunc的方式。
排版与格式
程序块采用缩进风格编写,使用空格而不是制表符('\t')进行缩进,每级缩进为4个空格
采用K&R风格作为大括号换行风格,即函数左大括号另起一行放行首,并独占一行,其他左大括号跟随语句放行末, 右大括号独占一行,除非后面跟着同一语句的剩余部分,如if语句的else/else if或者分号,比如:
structMyType { // 左大括号跟随语句放行末,前置1个空格
...
}; // 右大括号后面紧跟分号
intFoo(int a)
{ // 函数左大括号独占一行,放行首
if (a > 0) { // 左大括号跟随语句放行末,前置1个空格
...
} else { // 右大括号、"else"、以及后续的左大括号均在同一行
...