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; ”*/
嵌入式编码规范汇总:
本次归档参考安富莱编程规范,意为广大嵌入式开发者总结规范并合理使用。如有侵权,请联系删除