Micrium公司是著名的RTOS——μC/OS的提供商。μC/OS在实时嵌入式领域应用非常广泛,而且其代码符合MISRA-2004规范,因此非常值得汽车嵌入式工程师借鉴与参考。
采用良好的代码规范可以大大提高软件的维护性和可读性。代码规范没有唯一标准,坚持一贯的代码风格才是王道。
本文翻译了Micrium的代码规范,作为平时开发的参考文档。
命名规则
合适的命名
对变量、函数、文件名等对象命名,应根据其用途与上下文环境来取,建议使用英文名而不是汉语拼音。
过短、或者过于含糊的命名应避免,如Tbl[], Task(), MODULE_ERR, 或 p;特殊情况是,循环中可以使用i,j这样的过短的命名,因为大家都知道其意思。
命名应该做到具体、精确、简洁,如
NetOS_TCP_RxQ_TimeoutTbl_tick[],
FTPs_CtrlTask(),
CLK_OS_ERR_SIGNAL,
p_seg_hdr。唯一性
所有模块、文件名、函数名、全局变量名必须是唯一的(MISRA 2004 Rules 5.5, 5.6, 5.7)。局部变量名不要与全局变量,或者外部引用变量重名。
同样,命名不要与标准库中的函数名重名。名称长度
不允许出现前31个字符完全相同的多个命名(MISRA 2004 Rules 1.4 ,5.1)。可以允许多余31个字符的命名,但是编译器只检测前31个字符。因此所有的命名前31个字符必须唯一。层次感
命名应有层次划分,命名的前面部分可以加上模块名,如
• Module-Object
• Module-Object-Operation
• Module-Object-Status
• Module-Object-Handler
• Module-Object-State-Handler
• Module-Status
• Module-Status-Object
• Module-Question-Object
• Module-Operation-Object单位
在命名中包含单位的情况时,单位符号写在命名最后,尽量用小写表示,前面用下划线连接,如
驼峰命名:NetOS_TimeoutMin_us
大写命名:NET_APP_TIME_DLY_MAX_mS,此时用mS来代替ms。