天天看點

好的程式設計習慣(一)

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 測試

在系統聯調前,要做好功能測試,單元測試,接口測試。自己寫用例,可以借助工具來完成。

 轉載請原創連結:

繼續閱讀