代码书写规范
- 命名规范
1.1符号命名规则
符号名包括模块名、常量名、标号名、子程序名等。这些名字应该能反映它所代表的实际东西,具有一定的意义,使其能够见名知义,有助于对程序功能的理解。规则如下:
(1)所有宏定义、枚举常数和const变量,用大写字母命名。在复合词里用下划线隔开每个词,尽量使用英文或英文缩写。一些常量尽可能的用宏来替代,不要直接使用数字(ostime),某些流程使用状态机的每个状态使用枚举实现,方便增加删减某个状态。如果是一些固定的数组用const(操作系统每个任务申请的栈是有限的,mcu的RAM空间较小)。
(2)变量是复合词,每个单词的第一个字母大写,特别是使用频率和范围较大的变量,不可以用i,j,k(简单的循环变量可采用i, j, k)这样单一的字母来表示,这样时间久了或者别人看你的代码就很难理解清楚。(举例说明)
(3)类、类型定义和枚举型名的第一个字母大写。
(4)函数名每个单词采用第一个字母大写,其它字母小写方式。
(5) 类的成员变量应采用m_开头。
(6) 全局变量词头为g_ 。
(7) 临时变量词头为tmp_ 。
- 书写规范
2.1代码编辑
2.1.1 统一使用UTF-8编码
2.2.2编辑软件------------推荐使用source insight,统一使用配置可以避免代码注释行出现乱码
2.2.3 必要的地方需要加上代码注释,尽可能的使用英文注释, 一些底层接口或驱动配置需要注明函数的功能作用及作者。
2.2代码缩放与{}使用规范
2.2.1代码缩放,统一使用tab为单位缩放,tab缩放有个好处可以整体前移一个单位(alt+tab键)
2.2.2{}的使用规定不可省略。很多if,for语句当只有一个语句时,虽然可以省去{},但建议不要省掉。例如:
if(cMychar >= ‘N’)
if(cMychar <= ‘F’)
printf(“This is letter /n”);
else
printf(“This is not letter /n”);
else到底是否定哪个if容易引起误解
2.3语句书写
2.3.1每个分号占一行代码
2.3.2不要一句话写一连串的运算,尽量每句话做一到三的个运算,如果实在需要做很复杂的运算可以用函数封装起来,注明此接口的功能和参数的含义。
- 代码封装
3.1代码封装可以带来节省空间,方便阅读,方便修改。
3.1.1封装的原则和目的
如果一段代码重复出现很多次,就可以封装起来,其次就是完整的实现一个功能的一段代码可以封装成一个函数接口。这样就不会造成大量的重复代码,也可以避免千行函数的出现。看起来让人头大。
3.2避免出现语法比较复杂的语句。语法复杂度太高编译生成汇编文件会多很多语句,同时别人阅读起来也不会很流畅。