三. 一些习惯:
我认为比较好的习惯:
1.if(0 == GetDataType(…))比if(GetDataType(…) == 0) 好,纵使误将==写成=,在编译一层就会报错。
2.
#define MAX_DOWNLOADNUM 20
struct DownInfo m_DownInfo[MAX_DOWNLOADNUM];
在代码中尽量不用具体的大小数值,定义成宏,便于以后维护。
3.
CUSTXG_CONTABLE g_lpCustCon[] =
{
{"数值串1",C_ZGB,C_CUSTJBM,C_VT_FBJ,"万"},
{"数值串2",C_ZSZ,C_CUSTJBM,C_VT_FBJ,"万"},
…
{"数值比例",C_WTB,C_CUSTHQ,C_VT_FBJ,"%"}
};
int g_nCustNum = sizeof(g_lpCustCon)/sizeof(CUSTXG_CONTABLE);
g_ nCustNum自动适应g_lpCustCon的大小。
4.
函数定义short GetInputType( const char * lpzInput)比short GetInputType (char * lpzInput)好,以免lpzInput在函数体中被破坏。
5.
协议包头定义成:
typedef struct tagDataHeader
{
struct{
unsigned char Version:4;
unsigned char HeaderFlag:2;
unsigned char Reserved:2;//保留Bits位
}Info;
long nOther;
long Reserved; //保留4个字节
} DATAHEADER;
定义有一定的保留字段,供以后扩充使用。
6.
变量在定义时赋初值,类析构时或程序退出时判断释放所有变量。
7.
编码空间一定要充分预留,编码时注意可扩充性。
我认为不好的习惯:
1. 代码中是"+2","+4",而不是"+sizeof(short)","+sizeof(int)"。
2. filename[40],而不是filename[MAX_PATH]。
3. GDI资源使用完后不释放,位图、笔刷等用完后不Select出来。这样会将导致系统Gdi资源丢失或内存泄露。
4. 大量使用无符号型变量。无符号变量在判断时易造成错误,甚至死循环,尽量少用。
5. 使用malloc,free不使用new,delete,大量使用realloc。new,delete是规范的C++语法,通用性强,realloc易造成内存抖动。
6. #define square(x) (x)*(x)
宏的体应加括号,否则容易出问题,如1/square(x)将被替换1/(x)*(x)
文章来源于领测软件测试网 https://www.ltesting.net/