1
全局變量少用,或者用局部變量,或者放在類中,或函數中。
1)全局變量多了,不知道全局變量的含義,以及不知道有多少地方在使用。
2)資料未知
HANDLE g_Handle1;
HANDLE g_ArrHandle[] = { g_Handle1};
全局變量初始化的時候,g_Handle1,還沒有值。
如果隻是局部使用,就用局部變量。
3)将局部變量,考慮用全局變量代替,有一個原因可能是擔心棧溢出,而導緻程式異常,如果是這樣的話,用全局變量代替,隻是隐藏了問題。
2
類命名要統一
1)xx_yyyy_zzzzz
2)CXxxxYyyyy
要麼是1),要麼是2)。
3 參數做成一個配置檔案,其他地方引用
1)不會出現同步問題。
2)不會出現多份,節省記憶體。
4變量和函數的public和private
1)public給外面調用的。
看一個類的時候,通過看public和private就能看出來。
5
for (inti =0 ;
i<3;i++)
{
}
1)3 沒具體含義,配置變量。
2)如果是線上程中,做成異步,不會阻塞線程,定義幾個狀态。根據狀态來判斷。
3)定義查詢和建立接口。
6 map的使用
typedef
map<char*, CXxxxObject*>MapXxxxObject;
這樣寫,char* 是一個位址。要麼自己重載 < 方法。
char* 内容和位址都不同,才唯一。
pXxxxObject =
m_map_xxxx[temp];
這裡想要什麼效果,用一個字元串作為key嗎?如果是這樣達不到你的要求。
如果是int就沒這個問題。
7 傳回值
1)return 0; 沒有具體含義。
2)int和void
有值傳回用int,沒有值傳回用void。
8 XxxxYyyy*
pXxxxYyyy
1)與NULL判斷
2)
Assert(0)
assert(pXxxxYyyy);
3)自定義ASSERT,可以讓assert在release中也有效。
4)比較
與NULL判斷在release版本同樣需要做邏輯判斷。
assert保護現場,方面查找和定位問題。
8基類的析構函數定義為虛函數
如果不是虛函數,很容易記憶體洩露。子類裡可能釋放不了記憶體。
9在哪兒new,在哪兒delete
new和delete要在一個地方出現,這裡可以是一個函數,也可以是一個類。
1)代碼可讀性強。
2)容易檢查有沒有記憶體洩露。
有的時候,因為new出來的東西需要放在隊列中,那就在處理隊列的類中new和delete。
10 測試
在系統聯調前,要做好功能測試,單元測試,接口測試。自己寫用例,可以借助工具來完成。
轉載請原創連結: