1. 程式人生 > >常見程式碼命名規則

常見程式碼命名規則

幾種常見的程式命名規則
正確並形象地給函式、變數命名,不僅可以增加程式的可讀性,也是程式設計師程式設計風格的一種反映。較好的命名習慣,可以有效的提高程式的可維護性。以下介紹幾種常用的變數命名規則。
一、匈牙利命名法:廣泛應用於Microsoft Windows這類環境中。
這種命名技術是由一位能幹的 Microsoft 程式設計師查爾斯·西蒙尼(Charles Simonyi) 提出的。匈牙利命名法通過在變數名前面加上相應的小寫字母的符號標識作為字首,標識出變數的作用域,型別等。這些符號可以多個同時使用,順序是先m_(成 員變 量),再指標,再簡單資料型別,再其他。例如:m_lpszStr, 表示指向一個以0字元結尾的字串的長指標成員變數。
匈牙利命名法關鍵是:識別符號的名字以一個或者多個小寫字母開頭作為字首;字首之後的是首字母大寫的一個單詞或多個單詞組合,該單詞要指明變數的用途。
例如:bEnable, nLength, hWnd。
匈牙利命名法中常用的小寫字母的字首:

屬性部分:
g_ 全域性變數
c_  常量
m_  c++類成員變數
s_  靜態變數
型別部分:
陣列 a
指標 p
函式 fn
無效 v
控制代碼 h
長整型 l
布林 b
浮點型(有時也指檔案) f
雙字  dw
字串  sz
短整型  n
雙精度浮點 d
計數 c(通常用cnt)
字元 ch(通常用c)
整型 i(通常用n)
位元組 by
字 w
實型 r
無符號 u
描述部分:
最大 Max
最小 Min
初始化 Init
臨時變數 T(或Temp)
源物件 Src
目的物件 Dest

二、駝峰命名法:近年來越來越流行。
駝峰命名法,正如它的名稱所表示的那樣,指的是混合使用大小寫字母來構成識別符號的名字。其中第一個單詞首字母小寫,餘下的單詞首字母大寫。
例如:
printEmployeePaychecks();
函式名中每一個邏輯斷點都有一個大寫字母來標記。

三、帕斯卡(Pascal)命名法:與駝峰命名法類似。
只不過駝峰命名法是第一個單詞首字母小寫,而帕斯卡命名法則是第一個單詞首字母大寫。因此這種命名法也有人稱之為“大駝峰命名法”。
例如:
DisplayInfo();
UserName
都是採用了帕斯卡命名法。
在C#中,以帕斯卡命名法和駱駝命名法居多。
事實上,很多程式設計者在實際命名時會將駝峰命名法和帕斯卡結合使用,例如變數名採用駝峰命名法,而函式採用帕斯卡命名法。

四、下劃線命名法。
下劃線法是隨著C語言的出現流行起來的,在UNIX/LIUNX這樣的環境,以及GNU程式碼中使用非常普遍。
4.1 函式的命名
函式名使用下劃線分割小寫字母的方式命名:
裝置名_操作名();

操作名一般採用:謂語(此時裝置名作為賓語或者標明操作所屬的模組)或者謂語 賓語/表語(此時裝置名作為主語或者標明操作所屬的模組) 等形式,如:
tic_init();
adc_is_busy();
uart_tx_char();

中斷函式的命名直接使用 裝置名_isr() 的形式命名,如:
timer2_isr();

4.2 變數的命名
變數的命名也採用下劃線分割小寫字母的方式命名。命名應當準確,不引起歧義,且長度適中。如:
int length;
uint32 test_offset;

單字元的名字也是常用的,如i, j, k等,它們通常可用作函式內的區域性變數。tmp常用做臨時變數名。
區域性靜態變數,應加s_詞冠(表示static),如:
static int s_lastw;

全域性變數(尤其是供外部訪問的全域性變數),應加g_詞冠(表示global),如:
void (* g_capture_hook)(void);

4.3 常量及巨集的命名
採用下劃線分割大寫字母的方式命名,一般應以裝置名作為字首,
防止模組間命名的重複。如:

#define TIMER0_MODE_RELOAD 2
#define TIMER2_COUNT_RETRIEVE(val) ((uint16)(65536 - (val)))

當然,看作介面的巨集可以按照函式的命名方法命名,例如:

#define timer2_clear() (TF2 = 0)
#define timer0_is_expired() (TF0)

據考察,沒有一種命名規則可以讓所有的程式設計師贊同,程式設計教科書一般都不指定命名規則。命名規則對軟體產品而言並不是“成敗悠關”的事,我們不要化太多精力試圖發明世界上最好的命名規則,而應當制定一種令大多數專案成員滿意的命名規則,並在專案中貫徹實施。