關於C語言變數和函式命名規範

2021-06-16 05:05:03 字數 2402 閱讀 3078

關於c語言變數和函式命名規範

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

1. 共性規則

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

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

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

【規則1-2】識別符號的長度應當符合「min-length && max-information」原則。

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

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

例如windows應用程式的識別符號通常採用「大小寫」混排的方式,如addchild。而unix應用程式的識別符號通常採用「小寫加下劃線」的方式,如add_child。別把這兩類風格混在一起用。

【規則1-4】程式中不要出現僅靠大小寫區分的相似的識別符號。

例如:int x, x;    // 變數x 與 x 容易混淆

void foo(int x);  // 函式foo 與foo容易混淆

void foo(float x); 

【規則1-5】程式中不要出現識別符號完全相同的區域性變數和全域性變數,儘管兩者的作用域不同而不會發生語法錯誤,但會使人誤解。

【規則1-6】變數的名字應當使用「名詞」或者「形容詞+名詞」。

例如:float value;

float oldvalue;

float newvalue;

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

例如:drawbox();  // 全域性函式

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

【規則1-8】用正確的反義詞組命名具有互斥意義的變數或相反動作的函式等。

例如:        int     minvalue;        int    maxvalue;        int    setvalue(…);        int     getvalue(…);               

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

2. 簡單的windows應用程式命名規則

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

【規則2-1】類名和函式名用大寫字母開頭的單詞組合而成。

例如:class  node;      // 類名 class leafnode;      // 類名 void  draw(void);   // 函式名 void setvalue(int value); //  函式名

c語言變數和函式命名規範(2):

【規則2-2】變數和引數用小寫字母開頭的單詞組合而成。 

例如:booflag; int  drawmode; 

【規則2-3】常量全用大寫的字母,用下劃線分割單詞。

例如:const int max =  100;     const int max_length =  100; 

【規則2-4】靜態變數加字首s_(表示static)。

例如:void init(…)       

【規則2-5】如果不得已需要全域性變數,則使全域性變數加字首g_(表示global)。

例如:int g_howmanypeople;    // 全域性變數

int g_howmuchmoney;    // 全域性變數

【規則2-6】類的資料成員加字首m_(表示member),這樣可以避免資料成員與成員函式的引數同名。

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

【規則2-7】為了防止某一軟體庫中的一些識別符號和其它軟體庫中的衝突,可以為各種識別符號加上能反映軟體性質的字首。例如三維圖形標準opengl的所有庫函式均以gl開頭,所有常量(或巨集定義)均

C語言變數和函式命名規範

c 語言變數和函式命名規範 關於c語言變數和函式命名規範 據考察,沒有一種命名規則可以讓所有的程式設計師贊同,程式設計教科書一般都不指定命名規則。命名規則對軟體產品而言並不是 成敗悠關 的事,我們不要化太多 精力試圖發明世界上最好的命據考察,沒有一種命名規則可以讓所有的程式設計師贊同,我們不要化太多...

C語言變數和函式命名規範

c語言變數和函式命名規範 關於c語言變數和函式命名規範 據考察,沒有一種命名規則可以讓所有的程式設計師贊同,程式設計教科書一般都不指定命名規則。命名規則對軟體產品而言並不是 成敗悠關 的事,我們不要化太多精力試圖發明世界上最好的命據考察,沒有一種命名規則可以讓所有的程式設計師贊同,程式設計教科書一般...

C語言變數和函式命名規範

c 語言變數和函式命名規範 關於c語言變數和函式命名規範 據考察,沒有一種命名規則可以讓所有的程式設計師贊同,程式設計教科書一般都不指定命名規則。命名規則對軟體產品而言並不是 成敗悠關 的事,我們不要化太多 精力試圖發明世界上最好的命據考察,沒有一種命名規則可以讓所有的程式設計師贊同,程式設計教科書...