C++命名規(guī)則、借鑒阿里和谷歌命名規(guī)則
本命名規(guī)則結(jié)合阿里系和谷歌系命名規(guī)則
1,類(lèi)文件和類(lèi)命名:(阿里系)
類(lèi)文件名和類(lèi)名保持一致,且以大寫(xiě)字母C開(kāi)頭(代表 Class)+類(lèi)描述,類(lèi)描述由名詞或者形容詞+名詞組合,每個(gè)單詞首字母大寫(xiě).
2,接口命名:(阿里系)
接口的命名以大寫(xiě)字母I開(kāi)頭(代表 Interface )+接口描述,接口描述由名詞或者形容詞+名詞組合,每個(gè)單詞首字母大寫(xiě).
3,變量命令:(阿里系)
變量名的命名遵從匈牙利記法。即:作用域前綴 + 類(lèi)型 + 變量名 如:m_nMaxWidth
作用域前綴:
前綴? ? 說(shuō)明? ? 例子
無(wú)? ? 局部變量? ??
m_? ? 類(lèi)的成員變量(member)? ? Int m_width
ms_? ? 類(lèi)的靜態(tài)成員變量(static member)? ? static int ms_initValue;
s_? ? 靜態(tài)變量(static)? ? static int s_initValue;
g_? ? 外部全局變量(global)? ? int g_howManyPeople;
sg_? ? 靜態(tài)全局變量(static global)? ??
gg_? ? 進(jìn)程間共享的共享數(shù)據(jù)段全局變量(global global)? ??
類(lèi)型:
前綴? ? 說(shuō)明? ? 例子
b? ? 布爾型變量(bool, BOOL)? ? bEnable
ch? ? 字符型變量(char TCHAR)? ? chName
lpsz? ? LPSTR、LPCSTR、LPCTSTR? ? lpszName
n? ? 整型和位域變量(int, UINT,__int32,__int64)? ? nLength
l? ? long? ? lOffset
by? ? BYTE? ??
w? ? WORD? ? wPos
dw? ? DWORD? ? dwRange
f? ? 浮點(diǎn)型變量(float)? ??
d? ? double? ??
p? ? 指針型變量和迭代子(pointer)? ? pDoc
lp? ? 遠(yuǎn)指針? ??
e? ? 枚舉型變量(enumeration)? ??
pfn? ? 特別針對(duì)指向函數(shù)的指針變量和函數(shù)對(duì)象指針(pointer of function)? ??
g? ? 數(shù)組(grid)? ??
h? ? handle Windows對(duì)象句柄? ? hWnd
4,常量命名:(阿里系)
常量名由類(lèi)型前綴+全大寫(xiě)字母組成,單詞間通過(guò)下劃線來(lái)界定,如:cDELIMITER, nMAX_BUFFER。類(lèi)型前綴的定義與變量命名規(guī)則中的相同。
5,函數(shù)命名:(谷歌系)
函數(shù)的名稱(chēng)由一個(gè)或多個(gè)單詞組成。為便于界定,每個(gè)單詞的首字母要大寫(xiě)。
類(lèi)成員函數(shù)應(yīng)當(dāng)只使用“動(dòng)詞”,被省略掉的名詞就是對(duì)象本身
推薦的組成形式? ? 函數(shù)名應(yīng)當(dāng)使用"動(dòng)詞"或者"動(dòng)詞+名詞"(動(dòng)賓詞組)的形式。例如:"GetName()", "SetValue()", "Erase()", "Reserve()" ....
保護(hù)成員函數(shù)? ? 保護(hù)成員函數(shù)的開(kāi)頭應(yīng)當(dāng)加上一個(gè)下劃線“_”以示區(qū)別,例如:"_SetState()" ....
私有成員函數(shù)? ? 類(lèi)似地,私有成員函數(shù)的開(kāi)頭應(yīng)當(dāng)加上兩個(gè)下劃線“__”,例如:"__DestroyImp()" ....
虛函數(shù)? ? 虛函數(shù)習(xí)慣以“Do”開(kāi)頭,如:"DoRefresh()", "_DoEncryption()" ....
回調(diào)和事件處理函數(shù)? ? 回調(diào)和事件處理函數(shù)習(xí)慣以單詞“On”開(kāi)頭。例如:"_OnTimer()", "OnExit()" ....
全局函數(shù)必須以小寫(xiě)前綴"g"開(kāi)頭。
函數(shù)形參命名:(自定義)
函數(shù)形參的命名采用Camel命名法中的下劃線法,形參變量名全部小寫(xiě).由作用域前綴+'_'+變量名組成.
5,結(jié)構(gòu)體、宏、枚舉變量、聯(lián)合體(阿里系和谷歌系一樣)
全部由前綴+大寫(xiě)字母組成,單詞間使用下劃線界定。
5.1結(jié)構(gòu)體:加小寫(xiě)前綴"tag",之后以大寫(xiě)字母開(kāi)頭。
例:
typedef struct tagPOINT
{
int x;
int y;
} POINT;
5.2宏:宏名加小寫(xiě)前綴"def"
例:#define defMAXNUMBER 100
5.3枚舉變量:加小寫(xiě)前綴"enum"。
例:
typedef enum _CFILE_OPEN_MODE
{
enumOPEN_READONLY = 0,
enumOPEN_READWRITE = 1,
enumCREATE_ALWAY = 3
} CFILE_OPEN_MODE;
5.4聯(lián)合體:加小寫(xiě)前綴"uni"。
例:
typedef union _VARIANT
{
char unichVal;
int uninVal;
float uniftVal;
} VARIANT;
命名規(guī)則參考:https://developer.aliyun.com/article/619121? 阿里系
https://www.cnblogs.com/chensheng-zhou/p/5127415.html? ? 谷歌系
————————————————
版權(quán)聲明:本文為CSDN博主「HellowBoy19」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_40459084/article/details/123502809