61、【OS】【Nuttx】编码规范解读(九)
背景
接之前 blog
53、【OS】【Nuttx】编码规范解读(一)
54、【OS】【Nuttx】编码规范解读(二)
55、【OS】【Nuttx】编码规范解读(三)
56、【OS】【Nuttx】编码规范解读(四)
57、【OS】【Nuttx】编码规范解读(五)
58、【OS】【Nuttx】编码规范解读(六)
59、【OS】【Nuttx】编码规范解读(七)
60、【OS】【Nuttx】编码规范解读(八)
分析了行宽格式,注释要求,花(圆)括号风格,全局变量,结构体,宏定义,指针,结构体等,下面继续分析
Nuttx 编码规范
类型转换
类型转换操作符与被转换的值之间不要有空格
类型转换操作符用一对圆括号 () 包裹目标类型名,表示将某个值转换为目标类型,比如 (int) 表示把某个值转换为 int 类型
操作符
二元操作符
所有二元操作符(位于两个值之间的操作符,如+, -, =, !=, ==, >, <等)应在操作符的前后各留一个空格,以提高代码的可读性
示例如下
一元操作符
所有一元操作符(仅对一个操作数进行操作的操作符,如++, --, !, &, *, ~等)要紧挨着操作数,中间不要有任何空格,保持代码紧凑性和清晰性,避免混淆
复合操作符
- 复合操作符与等号 = 组合使用时,等号 = 应始终放在最后
- 很多操作符由一个字符和等号 = 组合而成的,比如 +=, >=, >>= 等等,有些编译器允许等号出现在左边或右边,为了消除歧义,要求等号必须始终放在右边,比如 a =++ b 这种是不被允许的
if then else
- if 关键字和后面的条件部分必须在同一行,并且中间有一个空格
- if 和 else 关键字在同一列对齐
- if 和 else 后面的语句必须始终用大括号包裹,即使只有一条语句或没有语句
- if-else 语句的最后一个右大括号后面跟一个空白行,除非该 if-else 语句嵌套在另一个复合语句内
举例如下
三元运算符
对于 if else then 的另一种表达:三元运算符 (condition)? then : else
- 三元运算符只适用于整个语句简短且能放在一行中的情况
- 如果三元运算符太长,要扩展到多行,则不要用这种表达,直接用 if else
- 条件部分和整个三元运算符语句推荐被括号包裹,以提高可读性和避免优先级问题
示例如下
switch 语句
- switch 和值在同一行,并用一个空格隔开
- 允许 case 不写 break,从一个 case 执行完再执行下一个 case,但必须加注释说明(实践中不推荐这样,case 最好还是加上 breask,利于代码维护)
- 即使所有情况都被覆盖,也要加上 default 分支,用于捕捉非法输入或异常值
- 把 case 中的代码块用 {} 包裹起来,确保作用域清晰和可读性
- break 相对 case 关键字要缩进两个空格
- 每个 case 语句块后要有一个空行,除非是最后一个并紧接右大括号 }
- switch 结束的大括号后要有一行空行,除非这个 switch 嵌套在一个复合语句中(比如函数体、if 语句等)
示例如下
while 语句
- while 关键字与条件在同一行并用一个空格隔开
- while 关键字与条件单独一行
- 循环体用大括号包裹
- 空语句不需要大括号,比如 while (condition);
- while 循环的右大括号后要跟一个空白行,除非嵌套在另一个复合语句内
举例如下