代码风格
命名风格
openHiTLS 使用统一的驼峰风格(CamelCase),具体规则如下:
| 类别 | 命名风格 | 形式 |
|---|---|---|
| 函数、结构体、枚举等 | 大驼峰 | AaaBbb,XXX_AaaBbb |
| 局部变量、参数、结构体成员 | 小驼峰 | aaaBbb |
| 全局变量 | 带”g_“的小驼峰 | g_aaaBbb |
| 宏、枚举值、goto标签、函数宏 | 全大写,下划线分割 | AAABBB,AAA_BBB |
尽量遵循openHiTLS工程已有风格,如:
协议模块
- 对外接口:
HiTLS_ReadHiTLS_前缀+接口名 - 模块接口:
CCS_Init模块名+接口名
算法模块
- 对外接口:
CRYPT_EAL_KdfNewCtxCRYPT_EAL_前缀+接口名 - 模块接口:
CRYPT_HKDF_NewCtxExCRYPT_HKDF_前缀+接口名
注释
/* */和//均可,注释内容需与注释符保留一空格,注释应贴近被注释内容,处于起上方或后边。
建议 /* */用于多行注释,//用于单行注释。
为保持统一,注释需采用英文。
格式
编码
统一使用utf-8编码。
换行符使用\n。
缩进
使用4空格缩进。
大括号
大括号换行使用K&R风格。函数定义的左大括号另起一行放行首,并独占一行,其他左大括号跟随代码放行末。
行宽
行宽不宜超过120字符。 换行时将操作符置于行末,新行缩进一层或进行同类对齐。例如
int x = a + b .... +
c;
语句
- 条件、循环语句使用大括号。
- 指针类型‘*’跟随变量或函数名。
- case/default相对于switch缩进一层。例如
switch (c) {
case a:
do_a();
break;
case b:
do_b();
break;
...
default:
break;
}
空格和空行
空格应突出关键字和重要信息,建议如下:
- 行末不加空格。
- if,switch,for,do,while等关键字后跟一空格。
- 小括号内两侧无空格。
- 一元操作符后无空格。
- 二元操作符前后有一空格。
- 结构体成员操作符前后无空格。
- 函数名与参数列表间无空格。
- 强制转换小括号与被转换对象间无空格。
- 数组名与中括号间无空格。
保持代码紧簇,避免过多空行。应根据上下内容关联程度合理使用空行。
clang-format
建议在提交代码前使用clang-format工具结合代码仓下的.clang-format配置文件格式化代码。
使用举例:
# 跳转至openHiTLS代码仓根目录
clang-format -i bsl/base64/src/bsl_base64.c