三. 一些習慣:
我認為比較好的習慣:
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)
文章來源于領測軟件測試網 http://www.kjueaiud.com/