编程规范笔记
1.组合:
通过成员变量的方式替代继承。
多继承,用组合代替。
2.继承
<=4层
3.异常
一定能被捕获到
分配内存失败
错误码难以返回,比如流
系统中与第三方c++库结合处使用异常
测试框架中
保证异常发生后资源不泄漏
4.头文件、头注释
/****************************************************************
Copyright(C),1988-1999,Huawei Tech.Co.,Ltd
File name : //文件名
Author : //作者 Version : //版本 Date : //完成日期
Description : //详细说明此程序文件完成的主要功能,
//与其它模块或函数的接口,输出值、取值范围
//、含义及参数间控制,顺序、独立或依赖关系
Others : //其它说明
Function List : //主函数列表:函数名、功能简要说明
1.....
History : //修改历史记录列表
1. Date : //修改日期
Author : //修改者
Modification : //修改内容简介
****************************************************************/
5.函数头注释
/****************************************************************
Function : //函数名称
Description : //函数功能、性能等描述
Calls : //被本函数调用的函数清单
Called By : //调用本函数的函数清单
Table Accessed : //被访问的表(此项仅对数据库操作)
Table Updated : //被修改的表(仅对数据库操作)
Input : //输入参数说明,包含每个参数的 作用、取值说明、参数间关系
Output : //对输出参数的说明
Return : //函数返回值的说明
Others : //其它说明
***************************************************************/
6.全局变量注释
包括:功能、取值范围、哪些函数存取它、存取时的注意事项
例子:
//The ErrorCode when SCCP translate
//Global Title failure as follows
//0-SUCCESS 1-GT Table Error
//2-GT error Others-no use
//Only function SCCPTranslate() in..
//the function GetGTTnsErrorCode()...
BYTE g_GTTranErrorCode;
7.if、for、while、switch 必须加注释
8.标识符命名
(1)短单词去掉“元音“形成缩写;长单词取单词头n个字母
例: temp => tmp; flag => flg; statistic => stat;
increment => inc; message => msg;
(2)禁止取单个字符(如i,j,k[只能作为局部循环变量])
(3)便娘命名必须加类型头,推荐使用大小写混排方式
(4)类成员变量必须以m_开头。全局变量必须以g_开头。
类型 类型头
boolean b
byte bt
short bt
word w
int i
DWORD dw
unsigned long ul
long l
char * psz
char c
CString str
typedef void * PVOID pv
typedef BYTE * PBYTE pby
typedef WORD * PWORD pw
typedef DWORD * PDWORD pdw
Enum e
Struct st
static s
(5)命名方式:小写+_ ; 驼峰 ; m_+驼峰
(6)编译开关一定以_开头。变量不可以用_开头
(7)代码中 数字 用#define或const代替
9.函数
(1)仔细、全面处理返回值
(2)精确实现函数设计
(3)多进/线程 操作函数 中对全局变量操作 + (P,V)||(lock)操作
(4)参数合法性规定:[1]由调用者负责 [2]由接口函数负责。默认由调用者负责
(5)行数<200
(6)扇出<7[3-5] 高扇入
10.项目
(1)只有一份代码
(2)使用——UNIT_DEBUG 编译开关实现测试版本与发型版本区别
(3)调测:打印的信息串至少要有所在的模块名[或源文件名]和行号
(4)编码要为但愿测试做准备
(5)编码与调试:先设计好调测开关及相关测试代码[打印函数等]
(6)系统有一定容错能力,如对用户误操作能进行自动补救
(7)如果代码确定但有警告,用#pragma warn -rrl //关闭警告 (+rrl打开警告)
11.测试
单元测试:
至少语句覆盖
保留测试信息
多做边界测试和非常规操作测试
一边编码,一边做但愿测试
12.宏
使用完备的括号
例: #define ADD(a,b) ((a)+(b))