日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > > 大橙子瘋嵌入式


前言

這篇重點介紹一下代碼編程的命名規(guī)范,主要是業(yè)界流行的命名法則和標識符命名規(guī)范

標識符的命名規(guī)則歷來是一個敏感話題,典型的命名風格如unix風格、windows風格等,從來無法達成共識。實際上,各種風格都有其優(yōu)勢也有其劣勢,而且往往和個人的審美觀有關。對標識符定義主要是為了讓團隊的代碼看起來盡可能統(tǒng)一,有利于代碼的后續(xù)閱讀和修改。
命名完全體現(xiàn)了程序的可閱讀性和可理解性,在一定程度上是不需要寫注釋也能看懂代碼。

命名法則介紹

目前,業(yè)界共有四種命名法則:駝峰命名法、匈牙利命名法帕斯卡命名法下劃線命名法,其中前三種是較為流行的命名法。

1printEmployeePaychecks// 駝峰命名法  2 3print_employee_paychecks//下劃線命名法 4 5PrintEmployeePaychecks// 帕斯卡命名法

其中,駝峰命名法和帕斯卡命名法類似,但是區(qū)別在第一個字母是否大小寫,因此駝峰命名法一般稱小駝峰命名法,帕斯卡命名法稱大駝峰命名法。


駝峰命名法

正如它的名稱所表示的那樣,是指混合使用大小寫字母來構(gòu)成變量和函數(shù)的名字(這樣的變量名看上去就像駱駝峰一樣此起彼伏,故得名),又叫小駝峰命名法。

當變量名或函數(shù)名是由一個或多個單詞連結(jié)在一起,而構(gòu)成的唯一識別字時,第一個單詞以小寫字母開始;從第二個單詞開始以后的每個單詞的首字母都采用大寫字母。

1printEmployeePaychecks

匈牙利命名法

通過在變量名前面加上相應的小寫字母的符號標識作為前綴,標識出變量的作用域、類型等。這些符號可以多個同時使用,順序是先m_(成員變量)、再指針、再簡單數(shù)據(jù)類型、再其它。這樣做的好處在于能增加程序的可讀性,便于對程序的理解和維護

匈牙利命名法的規(guī)則是:作用域(屬性)+類型+描述。

如:定義一個全局變量,指向類型為int的最小值指針,變量命名為
int g_pMinValue = NULL;

以下是我根據(jù)匈牙利命名法總結(jié)的的寫法對應表

分類 前綴 描述
作用域
(屬性)
局部變量
m_ 類成員變量(C++)
ms_ 類的靜態(tài)成員變量(C++)
s_ 靜態(tài)變量
g_ 全局變量
sg_ 靜態(tài)全局變量
c 常量
類型 b bool 變量,不過我一般是用 is,如定義一個數(shù)據(jù)接收完成標志,則 bool isRecvEnd;
sz 以 '\0' 結(jié)束的字符串
str string 類型字符串(C++)
p 指針變量
uc 無符號單字節(jié)整數(shù)型(unsigned char)
us 無符號雙字節(jié)整數(shù)型(unsigned short)
ui 無符號四字節(jié)整數(shù)型(unsigned int)
c 有符號單字節(jié)整數(shù)型(signed char)
s 有符號雙字節(jié)整數(shù)型(signed short)
i 有符號四字節(jié)整數(shù)型(signed int)
arr 數(shù)組
l 長整型
f 浮點型變量
pfn 函數(shù)指針
t 結(jié)構(gòu)體變量
e 枚舉變量
類型前綴可以組合使用,例如"arrc"表示字符數(shù)組,"psz"表示指向以`'\0'`結(jié)束的字符串的指針等等

有看過我代碼的朋友可能就會有疑問了,為什么我寫的代碼中關于變量的定義,特別是整數(shù)型的變量沒有加前綴ucusuicsil,而其它類型變量都會加上前綴,原因如下:

  1. 雖然這個一看名字就知道這個變量的類型定義和取值范圍,但是通常情況下變量定義后在后面的維護中可能為了增大或減少取值范圍,會改變類型的定義,但又不同時重命名變量,導致后來再看就會有異議

  2. 目前的大部分編程軟件將鼠標放置在變量上,通常就會提示該變量的類型定義,所以也不需要特意按照這個命名

  3. 大部分只有整數(shù)型的變量定義后才會因為取值范圍受限而改變類型定義,而其他類型的定義之后基本不會隨意變動


帕斯卡命名法

是指混合使用大小寫字母來構(gòu)成變量和函數(shù)的名字,每個單詞的第一個字母都大寫,又叫大駝峰式命名法;

1PrintEmployeePaychecks

下劃線命名法

使用下劃線()連接組成的標識符,即 單詞(字母或數(shù)字)單詞(字母或數(shù)字)_單詞(字母或數(shù)字)

1print_employee_paychecks(); // 函數(shù) 2int min_value = 0; // 變量 

標識符命名規(guī)范

根據(jù)不同場景使用不同命名規(guī)則,甚至組合使用,業(yè)內(nèi)比較常用的方式。

文件名

駝峰命名法,有時也使用下劃線命名法,根據(jù)不同情況使用,盡量和之前的保持一致

因為不同系統(tǒng)對文件名大小寫處理會有所不同(如Windows系統(tǒng)不區(qū)分大小寫,但是Linux系統(tǒng)則區(qū)分)


變量名

匈牙利命名法 + (?。劮迕▋煞N結(jié)合使用

具體規(guī)則是:屬性+類型+描述( 駝峰命名法)

  1. 使用名詞或者形容詞 + 名詞方式命名變量(描述),如char szFile[20] = "file";int fileSize = 0;

  2. 禁止使用單字節(jié)命名變量,但允許定義i、j、k等作為局部循環(huán)變量


宏定義/枚舉

大寫 + 下劃線命名法

  1. 對于數(shù)值或者字符串等等常量或者枚舉的定義,全部采用全大寫字母,單詞之間加下劃線“_”的方式命名。如#define MIN_VALUE 5

  2. 除了頭文件或編譯開關等特殊標識符定義,宏定義不能使用下劃線“_”開頭和結(jié)尾(一般來說,下劃線開頭或結(jié)尾的宏都是一些內(nèi)部的定義


函數(shù)名

帕斯卡命名法(大駝峰命名法),對于對外提供的接口函數(shù),則加模塊前綴

  1. 以函數(shù)要執(zhí)行的動作命名,一般采用動詞或者動詞+名詞的結(jié)構(gòu),且符合帕斯卡命名法

  2. 對于對外提供的接口函數(shù),一般加上模塊前綴LED_,如LED_CtrlOff(…)


通用規(guī)則

除了上述規(guī)則外,關于以上標識符的命名還應該符合以下規(guī)則:

1、標識符的命名要清晰、明了,有明確的含義,同時使用完整的單詞或大家基本可以認同和理解的縮寫,避免讓人產(chǎn)生誤解

如:良好的命名:int error_number;不好的命名:int n, nerr;

2、標識符的長度應當符合“min-length && max-information”原則

如:幾十年前老ANSI C規(guī)定名字不準超過6個字符,現(xiàn)今的C++/C不再有此限制。一般來說,長名字能更好地表達含義,所以函數(shù)名、變量名、類名長達十幾個字符不足為怪。那么名字是否越長好?不一定,例如變量名maxval就比maxValueUntilOverflow好用

3、除了常見的通用縮寫外,不使用單詞縮寫,不得使用漢語拼音

較短的單詞可以通過去掉“元音”形成縮寫,較長的單詞可取單詞的頭幾個字母形成縮寫,一些單詞有大家公認的縮寫,常用單詞縮寫必須統(tǒng)一。協(xié)議中的單詞縮寫與協(xié)議保持一致,對于某個系統(tǒng)使用的專用縮寫應該在注釋或者某處做統(tǒng)一說明

4、用正確的反義詞組命名具有互斥意義的變量或相反動作的函數(shù)等

如:add/remove,begin/end,creat/destroy等

5、盡量避免名字中出現(xiàn)數(shù)字編號,除非邏輯上的確需要編號

6、重構(gòu)/修改部分代碼時,應保持和原有代碼風格保持一致

根據(jù)源代碼現(xiàn)有的風格繼續(xù)編寫代碼,有利于保持總體一致


本站聲明: 本文章由作者或相關機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
關閉