嵌入式软件编程规范
2015-12-31 11:36
323 查看
一、命名规范
1、命名规范
为了使变量能够更好被阅读代码的其他开发人员理解,需要使用前缀
•a(数组)、b(布尔值)、i(4字节整型)、u(无符号整型数)、p(指针)、s(字符串)、sz(以NULL结尾的字符串)
--比如:
bool bFlag;
int iCount;
char szName[NAME_LEN];
•i,j,k,m,n,x,y,z 单字母变量可是使用在循环控制和索引处,不可滥用
•局部静态变量在符合其他规则的基础上,必须加前缀s_,如s_bFlag。
•全局变量在符合其他规则的基础上,必须加前缀g_,如:g_bFlag
•如果一个变量既是全局变量又是静态变量,则使用g_即可,因为相对于静态类型,全局类型更需要突出
•如果是一个结构体变量,可以使用stru_或者st_,视情况而定,不能使代码看起来太长,反而不容易阅读
2、函数命名
函数名由小写字母+下划线组成,在区别不同版本时可使用数字。
多个单词使用下划线分割。
函数名需加固定前缀,前缀形式:模块_,如:日志模块 log_write_alarm_entry()。
函数名必须有明确意思,功能相反的函数使用反义词区别。
--如:cfg_param_net_set(); cfg_param_net_get()。
usr_account_add(); usr_account_del()。
接口的多个版本命名可使用数字标识,以此区别不同版本,形式 _v1。
--如:cfg_param_net_set() 旧;cfg_param_net_set_v1(); cfg_param_net_set_v2()
3、结构体命名
1. 结构体名由大写字母、数字和下划线组成,不允许使用小写字母。
2.多个单词使用下划线分割。
3. 结构体名必须加固定前缀:模块_,固定后缀: _T。
[示例]:参数管理模块,pppoe参数 typedef struct {} CFG_PPPOE_PARAM_T, * PCFG_PPPOE_PARAM_T
4、宏命名
1.宏名由大写字母、数字和下划线组成,不允许使用小写字母。
2.多个单词使用下划线分割。
3.宏名必须加固定前缀,前缀形式:模块_。
--[示例]:参数管理模块,用户名长度 #define CFG_NAME_LEN (32)
二、宏的使用
目前在代码中,宏主要有两种作用,首先是定义一个数值,另外就是条件宏,用来控制编译器进行有选择的代码编译
数值宏在嵌套定义时,要加括号
#define SIZE (10*4)
#define NUM (1024/SIZE)
上例中若SIZE 定义时不加括号,那么NUM 就替换成了1024/ 10*4,将导致NUM值出乎预料
使用条件宏的过程中,若必须使用,则应避免过多的宏影响阅读
三、注释风格
1、错误修复和解决方法代码必须使用注释。
修改代码时,总是使代码的注释保持最新, 为了防止问题反复出现,对错误修复和解决方法代码必须使用注释。
2、在每个函数的开始,应该提供标准的注释。
以指示例程的用途,注释样本应该是解释它为什么存在和可以做什么的简短介绍。
3、在变量声明时,应在行尾添加注释;全局变量必须有注释。
在这种情况下,将所有行尾注释应使用公共制表符(Tab)在一处对齐。
4、对由循环和逻辑分支组成的代码使用注释。
这些可以帮助源代码读者理解代码书写目的。
5、为了使层次清晰,在闭合的右花括号后注释该闭合所对应的起点。
1、命名规范
为了使变量能够更好被阅读代码的其他开发人员理解,需要使用前缀
•a(数组)、b(布尔值)、i(4字节整型)、u(无符号整型数)、p(指针)、s(字符串)、sz(以NULL结尾的字符串)
--比如:
bool bFlag;
int iCount;
char szName[NAME_LEN];
•i,j,k,m,n,x,y,z 单字母变量可是使用在循环控制和索引处,不可滥用
•局部静态变量在符合其他规则的基础上,必须加前缀s_,如s_bFlag。
•全局变量在符合其他规则的基础上,必须加前缀g_,如:g_bFlag
•如果一个变量既是全局变量又是静态变量,则使用g_即可,因为相对于静态类型,全局类型更需要突出
•如果是一个结构体变量,可以使用stru_或者st_,视情况而定,不能使代码看起来太长,反而不容易阅读
2、函数命名
函数名由小写字母+下划线组成,在区别不同版本时可使用数字。
多个单词使用下划线分割。
函数名需加固定前缀,前缀形式:模块_,如:日志模块 log_write_alarm_entry()。
函数名必须有明确意思,功能相反的函数使用反义词区别。
--如:cfg_param_net_set(); cfg_param_net_get()。
usr_account_add(); usr_account_del()。
接口的多个版本命名可使用数字标识,以此区别不同版本,形式 _v1。
--如:cfg_param_net_set() 旧;cfg_param_net_set_v1(); cfg_param_net_set_v2()
3、结构体命名
1. 结构体名由大写字母、数字和下划线组成,不允许使用小写字母。
2.多个单词使用下划线分割。
3. 结构体名必须加固定前缀:模块_,固定后缀: _T。
[示例]:参数管理模块,pppoe参数 typedef struct {} CFG_PPPOE_PARAM_T, * PCFG_PPPOE_PARAM_T
4、宏命名
1.宏名由大写字母、数字和下划线组成,不允许使用小写字母。
2.多个单词使用下划线分割。
3.宏名必须加固定前缀,前缀形式:模块_。
--[示例]:参数管理模块,用户名长度 #define CFG_NAME_LEN (32)
二、宏的使用
目前在代码中,宏主要有两种作用,首先是定义一个数值,另外就是条件宏,用来控制编译器进行有选择的代码编译
数值宏在嵌套定义时,要加括号
#define SIZE (10*4)
#define NUM (1024/SIZE)
上例中若SIZE 定义时不加括号,那么NUM 就替换成了1024/ 10*4,将导致NUM值出乎预料
使用条件宏的过程中,若必须使用,则应避免过多的宏影响阅读
三、注释风格
1、错误修复和解决方法代码必须使用注释。
修改代码时,总是使代码的注释保持最新, 为了防止问题反复出现,对错误修复和解决方法代码必须使用注释。
2、在每个函数的开始,应该提供标准的注释。
以指示例程的用途,注释样本应该是解释它为什么存在和可以做什么的简短介绍。
3、在变量声明时,应在行尾添加注释;全局变量必须有注释。
在这种情况下,将所有行尾注释应使用公共制表符(Tab)在一处对齐。
4、对由循环和逻辑分支组成的代码使用注释。
这些可以帮助源代码读者理解代码书写目的。
5、为了使层次清晰,在闭合的右花括号后注释该闭合所对应的起点。
相关文章推荐
- 使用itextpdf提取pdf内容
- Spring WebMVC 4.1.4返回json时导致的 406(Not Acceptable)
- MyEclipse添加ibatis DTD文件实现xml的自动提示功能
- 零基础入门学习Python(24):魔法方法(4)描述符
- Python学习笔记——语法
- JavaCore HeapDump
- C++中智能指针的工作原理和简单实现
- 发布Qt Widgets桌面应用程序的方法
- 编程英语大全
- PECL 和 PEAR 的区别
- PHP - Cookie
- 如何写一个计算器?
- javaBean为什么要实现 序列化 Serializable接口?
- Eclipse RCP - 第一个RCP程序
- java如何得到GET和POST请求URL和参数列表
- C/C++ 输入一个数 判断是否是素数
- 【C++】基础知识—内联(置)函数及register关键字
- Qt 学习之路 2(23):自定义事件
- golang语言中map的初始化及使用
- [原]Qt 自定义事件