變數的命名規範之學習與思考

2021-06-20 18:58:07 字數 2144 閱讀 4804

寫程式,碼**,變數的名字。各位都是如何定義的呢?是有乙個好的規範,還是被迫或習慣性地使用乙個壞的規範(抑或隨心所以沒有規範)?

各位肯定在腹誹了:博主你來說說啥叫好規範,啥叫不好的規範,如何界定好不好。各位莫急,先不忙下定論,讓我們來看幾個著名的命名法則。

匈牙利命名法的核心思想, 基本原則是:變數名=屬性+型別+物件描述, 屬性問題不大,型別部分重要的或者容易忽略的我稍微列下:計數 c(通常用cnt);浮點(有時也指檔案) f;函式 fn。乙個有趣的例子是 g_cch : g_ 是全域性變數,c 和 ch 分別是計數型別和char型別,一起表示變數型別,這裡忽略了物件描述,所以它表示乙個對字元進行計數的全域性變數。 匈牙利命名法大家都耳熟能詳了,有人說它好,有人說它不好,有人只管用不管好不好。但是既然它這麼著名,那麼我們不如就用它來做標桿,看看市面上有沒有更好的規範。 (額外說一句,匈牙利命名法出身證明上就蓋這微軟的戳,所以一般在windows環境下開發程式設計師用更合適)

駱駝命名法

駱駝命名法可以按照小駱駝大駱駝,有大有小全家都是駱駝這三種方式來使用。 smallcamelcase(小駱駝),bigcamelcase(大駱駝),  class camelfamily (...混著用)。

駱駝命名法的好處很多,和匈牙利法的區別是不強制要求新增屬性和型別縮寫。也有人會將m_,g_,這些屬性用到駱駝命名法裡面。各有所好吧。   匈牙利命名法最大的爭議就是:規則中要求新增型別起什麼用,在強型別語言中型別搞錯根本編譯不出來,

int inum ;    string iothernum;    iothernum = inum; 這個**基本上不能編譯成功。

下劃線命名法和駱駝命名法沒有本質區別,視覺效果上,後者依靠大小寫字母來區分多個單詞而前者用下劃線。

pascal命名法:

在delphi中,用pascal語言程式設計,這個程式語言的變數命名規範看起來就是剛才提到的大駱駝命名法,所以我知道一定有人在咬牙切齒地指責為什麼把這種命名規範歸到駱駝命名法裡面去了。    

常用命名法或許不止以上幾種,實際上我們在工作中也未必絕對按照某種特定的方式工作,至少我本人就是將多種命名法混合起來使用了。現在來直面之前尖銳的問題,什麼樣的命名法是好的,什麼樣的命名法是不好的呢?之前四個命名法哪個更好,哪個不好呢?

我個人的觀點是,先考慮一下,為什麼要有命名法呢?回想一下,我們寫數學公式,做工程藍圖時,命名各種變數無非是x , y , z。要麼就是直接用母語在合理的位置上寫出這個這個變數是什麼:周長,電阻,等等(甚至可能只有數值,沒有名稱)。恩,首先顯而易見的原因是程式**的分割不象數學公式那樣抽象,大多數變數和函式背後都是有實實在在的客觀事物的,所以它可以依靠生活中的或者計算機字典中的動名詞來命名變數,並切實提高閱讀效率。其次是高階語言畢竟不象電路圖那樣只需要人能看懂就好,它必須確保編譯器能夠「理解」,所以只有「值」,沒有「名」,**恐怕寫不好。由此可見,變數名這個東西,不是有誰喜歡它,或者說程式中有變數名會使程式變得有多漂亮,那麼這樣一來,好與不好就很容易界定了: 在盡可能確保別人能看懂的情況下,越容易敲出來越好。這就是說,需要根據**規模,編寫方式,參與人員綜合考慮。

例如:如果你是在維護乙個歷史悠久的老程式,因為沒有過載,裡面的功能總是要在用不同型別來反覆實現,那麼變更名名稱裡有型別的縮寫會看起來很整齊,並且每次都以i***,f***,l***這種格式反覆列隊,每個人寫程式都會記得補齊相關**,不至於忘記某個型別。 又例如:團隊裡有那麼幾個殘疾兒童(不要笑,確有其事),他們輸入下劃線好費力,那麼就不要選擇下劃線命名法了吧。

至於我個人麼,由於最初是從pascal開始寫程式的,所以我更傾向於pascal命名法。不過一些細節我略有修改

1  不過對於全域性變數,成員變數,常量,我會加上屬性字首。字首只用乙個 ,優先順序是:靜態變數字首 > 常量字首》 全域性/成員變數字首 。

3  result 表示函式返回值。不論它是什麼型別。

4  避免縮寫,除了usa這種字典上都能查到的單詞。

5  臨時變數用小寫字母 t 。

6  其他無明確業務含義的變數,在程式語義正確的前提下,依次使用 i j k  x y z 六個字母還不夠用就得考慮程式是否寫出問題了。

7  格式話的**尊重典範  main(int argc,char* argv)

8  指標和&靠向變數名 : string *name 這是因為這樣輸入在鍵盤上比較流暢,這和我個人操作鍵盤習慣有關,不是每個人都一定是這樣的。

變數的命名規範

在msdn中,一些引數的第乙個字母n或lp表示什麼意思啊?比如 virtual bool create lpctstr lpszclassname,lpctstr lpszwindowname,dword dwstyle,const rect rect,cwnd pparentwnd,uint ni...

程式設計規範 變數的命名

變數命名的最高原則 真實物理意義。常見簡寫 字首與字尾 name length 則要好於 length of a student name 如牛頓拉普生方法求解方程的根時對初始值的命名及賦值,double guess 猜測值,大概值比如求解 cos x x3 0 cos x x 3 0或者簡單的代數...

變數的命名規則和命名規範

變數的命名規則和命名規範 規則 必須遵守的,不遵守就是錯 1.乙個變數名稱可以由數字 字母 下劃線 美元符號 組成 2.嚴格區分大小寫 3.不能由數字開頭,不要使用中文漢字命名 4.不能是保留字或者關鍵字 5.不要出現空格 規範 建議遵守的,不遵守不會報錯 1.變數名盡量有意義 語義化 2.遵循駝峰...