安富莱C语言编码规范 4 --可读性 (1) 注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。 说明:防止阅读程序时产生误解,防止因默认的优先级与设计思想不符而导致程序出错。
示例:下列语句中的表达式
正确的写法:
- word = (high << 8) | low;
- if ((a | b) && (a & c))
- if ((a | b) < (c & d))
复制代码
错误的写法:
- word = high << 8 | low;
- if (a | b && a & c)
- if (a | b < c & d) /* 造成了判断条件出错 */
复制代码
(2) 避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。
示例:如下的程序可读性差。
- if (Trunk[index].trunk_state == 0) <---- 不规范的写法,应使用有意义的标识
- {
- Trunk[index].trunk_state = 1; <---- 不规范的写法,应使用有意义的标识
- ... /* program code */
- }
复制代码
应改为如下形式。
- enum trunk_state_e
- {
- TRUNK_IDLE = 0,
- TRUNK_BUSY = 1
- };
- if (Trunk[index].trunk_state == TRUNK_IDLE)
- {
- Trunk[index].trunk_state = TRUNK_BUSY;
- ... /* program code */
- }
复制代码
(3) 不要使用难懂的技巧性很高的语句,除非很有必要时。
说明:高技巧语句不等于高效率的程序,实际上程序的效率关键在于算法。
示例:如下表达式,考虑不周就可能出问题,也较难理解。
- * stat_poi ++ += 1;
- * ++ stat_poi += 1;
复制代码
应分别改为如下。
- *stat_poi += 1;
- stat_poi++; /* 此二语句功能相当于“ * stat_poi ++ += 1; ”*/
- ++ stat_poi;
- *stat_poi += 1; /* 此二语句功能相当于“ * ++ stat_poi += 1; ”*/
复制代码
|