内核编码规范
此规范基于业界通用的编程规范整理而成,请内核的开发人员遵守这样的编程风格。
总体原则
总体原则:
- 清晰:代码应当易于理解、易于维护、易于重构,避免晦涩语法
- 简洁:命名简短,函数紧凑
- 高效:通过使用算法、编译器优化选项或硬件资源提高程序效率
- 美观:代码风格合理、一致
在大部分情况下,开发人员应当遵从以下规范,但也有一些例外场景。如修改第三方开源代码或大量使用开源代码接口下,应当与开源代码保持一致。请依据总体原则,灵活处理。
目录结构
建议按照功能模块划分子目录,子目录再定义头文件和源文件目录。
目录名和文件名如果没有特殊的需要,采用全小写的形式,可以使用下划线(“_”)分割。
命名
推荐使用驼峰风格,具体规则如下:
内核对外API建议采用LOS_ModuleFunc的形式,如果有宾语则建议采用前置的方式,比如:
LOS_TaskCreate
LOS_MuxLock
kernel目录下内部模块间的接口使用OsModuleFunc的形式,比如:
OsTaskScan
OsMuxInit
注释
一般的,尽量通过清晰的软件架构,良好的符号命名来提高代码可读性;然后在需要的时候,才辅以注释说明。
注释是为了帮助阅读者快速读懂代码,所以要从读者的角度出发,按需注释。
注释内容要简洁、明了、无歧义,信息全面且不冗余。
文件头部要进行注释,建议注释列出:版权说明、文件功能说明,作者、创建日期、注意事项等。
注释风格要统一,建议优先选择/* */的方式,注释符与注释内容之间要有1空格,单行、多行注释风格如下:
/* 单行注释 */
// 单行注释
/*
* 多行注释
* 第二行
*/
// 多行注释
// 另一行
针对代码的注释,应该置于对应代码的上方或右方。
代码上方的注释,与代码行间无空行,保持与代码一样的缩进。
代码右边的注释,与代码之间,至少留1空格。
建议将多条连续的右侧注释对齐,比如:
#define CONST_A 100 /* Const A */
#define CONST_B 2000 /* Const B */
格式
程序采用缩进风格编写,使用空格而不是制表符(’\t’)进行缩进,每级缩进为4个空格。
换行时,函数左大括号另起一行放行首,并独占一行;其他左大括号跟随语句放行末。右大括号独占一行,除非后面跟着同一语句的剩余部分,如 do 语句中的 while,或者 if 语句的else/else if,或者逗号、分号。
一行只写一条语句。
比如:
struct MyType { // 跟随语句放行末,前置1