高質量C C程式設計指南 第3章 命名法例

2022-10-11 17:45:10 字數 2941 閱讀 4497

較勁有名的命名法例當推microsoft公司的「匈牙利」法,該命名法例的主要頭腦是「在變數和函式名中參與字首以增進人們對步伐的認識探詢」。比方悉數的字元變數均以ch為字首,若是指標變數則追加字首p。假定乙個變數由ppch收尾,則批註它是指向字元指標的指標。

「匈牙利」法最年夜的缺陷是囉嗦,比方

int    i,  j,  k; 

float  x,  y,  z;

倘若假定採納「匈牙利」命名法例,則應當寫成

int    ii,  ij,  ik;  // 字首 i暗示int典型榜樣

float  fx,  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步伐中不要出現僅靠年夜小寫區分的相通的識別符號。

比方:int  x,  x;      // 變數x 與 x 隨便攪渾

void foo(int x);    // 函式foo 與foo隨便攪渾

void foo(float x);

l【法例3-1-5步伐中不要出現識別符號完全相反的部分變數和全域性變數,雖然兩者的薰染域分歧而不會發生語法錯誤,但會使人誤解。

l【法例3-1-6變數的名字應當運用「名詞」可以「描寫詞+名詞」。

比方:float  value;

float  oldvalue;

float  newvalue;

l【法例3-1-7全域性函式的名字應當運用「動詞」可以「動詞+名詞」(動賓片語)。類的成員函式應當只運用「動詞」,被省略失的名詞便是物件本人。

比方:drawbox();              // 全域性函式

box->draw();        // 類的成員函式

l【法例3-1-8用正確的反義詞組命名具有互斥意義的變數或相反方法的函式等。

比方:int      minvalue;

int      maxvalue;

int      setvalue(…);

int      getvalue(…);

²【提倡3-1-1只管避免名字**現數字編號,如value1,value2等,除非邏輯上的確需求編號。這是為了灌注步伐員偷懶,不願為命名動頭腦而招致發生計心義的名字(由於用數字編號最省事)。

作者對「匈牙利」命名法例做了合理的簡化,下述的命名法例複雜易用,較勁適當於windows利用軟體的拓荒。

l【法例3-2-1類名和函式名用年夜寫字母收尾的單詞組合而成。

比方:>              // 類名

>           // 類名

void  draw(void);     // 函式名

void  setvalue(int value);  // 函式名

l【法例3-2-2變數和引數用小寫字母收尾的單詞組合而成。

比方:bool flag;

int  drawmode;

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收尾。

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

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

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

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

高質量C C程式設計指南 第5章 常量

常量是一種識別符號,它的值在執行期間恆定不變。c語言用 define來定義常量 稱為巨集常量 c 語言除了 define外還可以用const來定義常量 稱為const常量 如果不使用常量,直接在程式中填寫數字或字串,將會有什麼麻煩?1 程式的可讀性 可理解性 變差。程式設計師自己會忘記那些數字或字串...