代碼規範
引言
沒有規矩,不成方圓。
好的代碼規範讓代碼更具可讀性和維護性,今天就代碼的規範性做如一些總結。
變量的命名
前綴(小寫字母+下劃線)表明變量的作用域,無前綴表明是局部變量或者函數參數,如:
1.m_xx 表示是類的成員變量
2.g_xx 表示是全局變量
3.c_xx 表示是一個常量
函數命名
- 常見方法有匈牙利命名法、駝峯命名法和下劃線命名法。
- 由於下劃線在鍵盤位置特殊,匈牙利命名法也有一定的侷限性,駝峯命名法更受歡迎。
- 函數命名採用英文單詞組合表示(動詞+名詞),至少一個動詞
- 函數命名應該可以讓人“望文生義”,避免一個動詞的使用,如Save應改成SaveVal
類命名
- 通常以父類的簡寫開頭,如:FrmXXX 可看出該類是從 Form 中繼承過來的。
- 類名以大寫字母開頭,命名避免下劃線。
- 類實例命名可以參照類名,如: FrmXXXX frmXXX=new FrmXXX();
模塊之間應該要用空格隔開,同一代碼塊中不同邏輯塊之間空一行,函數之間至少空一行,不超過三行。
註釋原則:
- 註釋講究簡潔,有重點,正確;
- 應該是寫優雅的、可讀性高的代碼,而不是爲晦澀的代碼註釋。
- 儘量減少程序體內代碼的註釋,保持代碼的直接可閱讀性。
優化
函數代碼優化:
- 去掉從沒用過的參數
- 始終對參數合法性進行檢驗,對不合法的參數輸入要進行處理。
- 參數不宜過多,過多應採用類封裝後以實例傳入。
- 如果一個參數不能被修改,將該類聲明爲const。
- 對於函數要用到的全局變量儘量應該採用傳參的方法,實現參數代替,減少函數和外界 的聯繫,提高內聚
- 一個單一的函數代碼量不宜過多,過多應該切分成小函數。
- 對於冗餘的變量應該應該抽取出來作爲函數的方法消除冗餘。
- 儘量減少函數出口,即return,如:
優化前:
string getControlText(int index){
if(parameterValid()==false)
return null;
switch(nindex){
case 0:
return txtValue1.text;
case 1:
return txtValue2.text;
......
}
}
優化後:
string getControlText(int index){
string strReturnValue=null;
if(parameterValid()==true){
switch(nindex){
case 0:
strReturnValue=txtValue1.text;
break;
case 1:
strReturnValue=txtValue2.text;
break;
......
}
}
return strReturnValue;
}
類內的優化:
- 只對對外的接口才聲明爲public;
- 儘量減少成員函數、變量的依賴性
類之間的優化:
- 界面處理和數據處理應該分離在兩個類中
- 當不同類有相同代碼時,有以下幾個方法可以考慮:
- 相同方法抽象成父類
- 抽象到一個新類中。
- 接口實現