華為軟體編程規範學習(三)--標識符命名
3-1:標識符的命名要清晰、明了,有明確含義,同時使用完整的單詞或大家基本可以理解的縮寫,避免使人產生誤解
說明:較短的單詞可通過去掉“母音”形成縮寫;較長的單詞可取單詞的頭幾個字母形成縮寫;一些單詞有大家公認的縮寫。
樣本:如下單詞的縮寫能夠被大家基本認可。
temp 可縮寫為 tmp ;
flag 可縮寫為 flg ;
statistic 可縮寫為 stat ;
increment 可縮寫為 inc ;
message 可縮寫為 msg ;
3-2:命名中若使用特殊約定或縮寫,則要有注釋說明
說明:應該在源檔案的開始之處,對檔案中所使用的縮寫或約定,特別是特殊的縮寫,進行必要的注釋說明。
3-3:自己特有的命名風格,要自始至終保持一致,不可來回變化
說明:個人的命名風格,在符合所在項目組或產品組的命名規則的前提下,才可使用。(即命名規則中沒有規定到的地方才可有個人命名風格)。
3-4:對於變數命名,禁止取單個字元(如i、j、k...),建議除了要有具體含義外,還能表明其變數類型、資料類型等,但i、j、k作局部迴圈變數是允許的
說明:變數,尤其是局部變數,如果用單個字元表示,很容易敲錯(如i寫成j),而編譯時間又檢查不出來,有可能為了這個小小的錯誤而花費大量的查錯時間。
樣本:下面所示的局部變數名的定義方法可以借鑒。
int liv_Width
其變數名解釋如下:
l 局部變數(Local) (其它:g 全域變數(Global)...)
i 資料類型(Interger)
v 變數(Variable) (其它:c 常量(Const)...)
Width 變數含義
這樣可以防止局部變數與全域變數重名。
3-5:命名規範必須與所使用的系統風格保持一致,並在同一項目中統一,比如採用UNIX的全小寫加底線的風格或大小寫混排的方式,不要使用大小寫與底線混排的方式,用作特殊標識如標識成員變數或全域變數的m_和g_,其後加上大小寫混排的方式是允許的
樣本:Add_User不允許,add_user、AddUser、m_AddUser允許。
其他
3-1:除非必要,不要用數字或較奇怪的字元來定義標識符
樣本:如下命名,使人產生疑惑。
#define _EXAMPLE_0_TEST_
#define _EXAMPLE_1_TEST_
void set_sls00( BYTEsls );
應改為有意義的單詞命名
#define _EXAMPLE_UNIT_TEST_
#define _EXAMPLE_ASSERT_TEST_
void set_udt_msg_sls(BYTE sls );
3-2:在同一軟體產品內,應規劃好介面部分標識符(變數、結構、函數及常量)的命名,防止編譯、連結時產生衝突
說明:對介面部分的標識符應該有更嚴格限制,防止衝突。如可規定介面部分的變數與常量之前加上“模組”標識等。
3-3:用正確的反義片語命名具有互斥意義的變數或相反動作的函數等
說明:下面是一些在軟體中常用的反義片語。
add /remove begin /end create / destroy
insert /delete first /last get / release
increment /decrement put / get
add /delete lock /unlock open / close
min /max old /new start / stop
next /previous source / target show / hide
send /receive source / destination
cut /paste up / down
樣本:
int min_sum;
int max_sum;
int add_user( BYTE *user_name );
int delete_user( BYTE *user_name );
3-4:除了編譯開關/標頭檔等特殊應用,應避免使用_EXAMPLE_TEST_之類以底線開始和結尾的定義