C 程式設計規範 第3章 命名規則

2021-04-07 12:29:15 字數 3319 閱讀 3446

比較

著名的命名規則當推

microsoft

公司的「匈牙利」法,該命名規則的主要思想是「

在變數和函式名中加入字首以增進人們對程式的理解」。例如所有的字元變數均以ch為字首,若是指標變數則追加字首p。如果乙個變數由ppch開頭,則表明它是指向字元指標的指標。

「匈牙利」法最大的缺點是煩瑣,例如

inti,j,k;

floatx,y,z;

倘若採用

「匈牙利」命名規則,則應當寫成

intii,ij,ik;//

字首 i表示int型別

floatfx,fy,fz;//

字首 f表示float型別

如此煩瑣的程式會讓絕大多數程式設計師無法忍受。

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

本節論述的共性規則是被大多數程式設計師採納的,我們應當在遵循這些共性規則的前提下,再擴充特定的規則,如

3.2節。

l【規則

3-1-1

識別符號應當直觀且可以拼讀,可望文知意,不必進行「解碼」。

識別符號最好採用英文單詞或其組合,便於記憶和閱讀。切忌使用漢語拼音來命名。程式中的英文單詞一般不會太複雜,用詞應當準確。例如不要把

currentvalue

寫成nowvalue。l

【規則3-1-2

識別符號的長度應當

符合「min-length && max-information」原則。

幾十年前老

ansi c

規定名字不准超過6個

字元,現今的c++/c不再有此限制。一般來說,長名字能更好地表達含義,所以函式名、變數名、類名長達十幾個字元不足為怪。那麼名字是否越長約好?不見得! 例如變數名maxval就比maxvalueuntiloverflow好用。單字元的名字也是有用的,常見的如i,j,k,m,n,x,y,z等,它們通常可用作函式內的區域性變數。 l

【規則3-1-3

命名規則盡量與所採用的作業系統或開發工具的風格保持一致。

例如windows

應用程式的識別符號通常採用「大小寫」混排的方式,如

addchild

。而unix

應用程式的識別符號通常採用「小寫加下劃線」的方式,如

add_child

。別把這兩類風格混在一起用。

l【規則

3-1-4

程式中不要出現僅靠大小寫區分的相似的識別符號。

例如:intx,x;//

變數x 與 x

容易混淆

void foo(int x);//

函式foo 與foo

容易混淆

void foo(float x);

l

【規則3-1-5

程式中不要出現識別符號

完全相同的區域性變數和全域性變數,儘管兩者的作用域不同而不會發生語法錯誤,但會使人誤解。

l【規則

3-1-6

變數的名字應當使用「名詞」或者「形容詞+名詞」。

例如:floatvalue;

floatoldvalue;

floatnewvalue;

l【規則

3-1-7

全域性函式的名字應當使用「動詞」或者「動詞+名詞」(動賓片語)。類的成員函式應當只使用「動詞」,被省略掉的名詞就是物件本身。

例如:drawbox();//

全域性函式

box->draw();//

類的成員函式

l【規則

3-1-8

用正確的反義詞組命名具有互斥意義的變數或相反動作的函式等。

例如:intminvalue;

intmaxvalue;

intsetvalue(…);

intgetvalue(…);

²【建議

3-1-1

盡量避免名字中出現數字編號,如value1,value2等,除非邏輯上的確需要編號。這是為了防止程式設計師偷懶,不肯為命名動腦筋而導致產生無意義的名字(因為用數字編號最省事)。

作者對「匈牙利」命名規則做了合理的簡化,下述的命名規則簡單易用,比較適合於

windows

應用軟體的開發。

l【規則

3-2-1

類名和函式名用大寫字母開頭的單詞組合而成。

例如:class node;

// 類名

class leafnode;

// 類名

voiddraw(void);//

函式名

voidsetvalue(int value);//

函式名

l【規則

3-2-2

變數和引數用小寫字母開頭的單詞組合而成。

例如:bool flag;

intdrawmode;

l

【規則3-2-3

常量全用大寫的字母,用下劃線分割單詞。

例如:const int max = 100;

const int max_length = 100;

l

【規則3-2-4

靜態變數加字首

s_(表示

static

)。例如:

void init(…)

l【規則

3-2-5

如果不得已需要全域性變數,則使全域性變數加字首

g_(表示

global

)。例如:

int g_howmanypeople;//

全域性變數

int g_howmuchmoney;//

全域性變數

l【規則

3-2-6

類的資料成員加字首

m_(表示

member

),這樣可以避免資料成員與成員函式的引數同名。

例如:void object::setvalue(int width, int height)

l【規則

3-2-7

為了防止某一軟體庫中的一些識別符號和其它軟體庫中的衝突,可以為各種識別符號加上能反映軟體性質的字首。例如三維圖形標準

opengl

的所有庫函式均以

gl開頭,所有常量(或巨集定義)均以

gl開頭。

第 3 章命名規則索引

比較著名的命名規則當推microsoft 公司的 匈牙利 法,該命名規則的主要思想 是 在變數和函式名中加入字首以增進人們對程式的理解 例如所有的字元變數均以 ch 為字首,若是指標變數則追加字首p。如果乙個變數由ppch 開頭,則表明它是指向 字元指標的指標。匈牙利 法最大的缺點是煩瑣,例如 in...

C語言程式設計規範4 命名規則

我們不僅要寫高效的 還要寫可讀性很強的 隨著我們所開發系統的複雜性的不斷提高,這就要求我們所寫的程式具有3個特性 1 可讀性 2 可多人協作性 3 可移植性。但是,像我們這樣電子專業畢業的學生,都沒有接受過 軟體設計方 作業系統原理 等課程的深入訓練,這就使我們所寫的程式與軟體專業工程師所寫的程式具...

高質量C C程式設計指南 第3章 命名規則

第3章 命名規則 比較著名的命名規則當推microsoft公司的 匈牙利 法,該命名規則的主要思想是 在變數和函式名中加入字首以增進人們對程式的理解 例如所有的字元變數均以ch為字首,若是指標變數則追加字首p。如果乙個變數由ppch開頭,則表明它是指向字元指標的指標。匈牙利 法最大的缺點是煩瑣,例如...