C/C++代码规范
C/C++代碼規(guī)范
命名
命名,包括文件名、類名、結(jié)構(gòu)名、類型名、函數(shù)名、變量名、參數(shù)名等都是程序設(shè)計(jì)中重要的一部分。一個(gè)好的名稱,體現(xiàn)了一個(gè)深思熟慮的過程,同時(shí)也 能夠幫助別人更好地理解開發(fā)者的思路。如果發(fā)現(xiàn)程序中,充滿了a, b, c, x, y, z, tmp這種命名的變量,這時(shí)候就需要仔細(xì)的考慮自己的實(shí)現(xiàn)是否有問題。
類(結(jié)構(gòu))名
- 類名必須是名詞,類名必須明確表示這個(gè)類代表了什么。
- 如果類名超過3個(gè)單詞,說明這個(gè)類有可能需要拆分了。
- 不要把父類的名字帶到子類中。
- 類名加上后綴也是一種選擇。如下載代理類,可以寫為DownloadProxy。
- 類名首字母大寫;用大寫字母分隔單詞,除單詞的首字母外,全部小寫;類名中不要出現(xiàn)下劃線“_”。
類(結(jié)構(gòu))屬性名
- 屬性由成員前綴”m_“屬性,屬性名采用匈牙利命名規(guī)范。
方法
- 方法與函數(shù)執(zhí)行一個(gè)任務(wù),因此應(yīng)當(dāng)用動(dòng)詞來(lái)命名。比方說,DumpDataToFile()就要好于DataFile()。
- 方法名首字母大寫;用大寫字母分隔單詞,除單詞的首字母外,全部小寫,方法名中不要出現(xiàn)下劃線。
函數(shù)
- 方法與函數(shù)執(zhí)行一個(gè)任務(wù),因此應(yīng)當(dāng)用動(dòng)詞來(lái)命名。
- 函數(shù)名全部小寫,單詞之間用下劃線分隔。
方法與函數(shù)參數(shù)名
- 首字母小寫。
- 除了第一個(gè)單詞,所有單詞的首字母大寫。
- 名稱中不應(yīng)出現(xiàn)”_”。
類庫(kù)名
- 如果使用C書寫類庫(kù),或在C++不使用namespace書寫類庫(kù),為了避免命名沖突,需要在類名,結(jié)構(gòu)名,函數(shù)名前加上類庫(kù)名前綴。類庫(kù)名應(yīng)當(dāng)簡(jiǎn)潔、明確。 如: ImEgg* ImEgg_new();
變量名
- 變量名使用匈牙利命名規(guī)則。
- 全部小寫字母。
- 使用”_”作為分隔符。
- 唯一能違反以上命名規(guī)則的,是一些循環(huán)中需要用到的自增變量。 如: int fun(Point* pPoint)
{Point* p_nest_point = pPoint;char* p = NULL;char sz_buf[255];for (int i = 0; i < 50 && (sz_buf+p++) != ' '; i++){// do stuff}
}
p point b byte w word dw double word ch char wch wide char n number sz char[] f bool fn function pointer v void lpsz char* terminated by zero
指針變量
- 指針變量應(yīng)在類型前加上p前綴,其后變量名命名規(guī)則不變。
- *號(hào)永遠(yuǎn)靠近類型,一行聲明中只出現(xiàn)一個(gè)指針變量。 如: Point* p_point;
引用變量
- 引用變量應(yīng)在類型前加上r前綴,其后變量名命名規(guī)則不變。
全局變量
- 全用變量應(yīng)使用g_屬性描述,其后變量名命名規(guī)則不變。 如: ImLog4c* g_pLogger;
靜態(tài)變量
- 靜態(tài)變量應(yīng)使用s_屬性描述,其后變量名命名規(guī)則不變。 ImLog4c* s_pLogger;
枚舉類型
- 枚舉類型命名規(guī)則使用大寫字母,用下劃線分隔單詞。 Enum PIN { PIN_ON = 1; PIN_OFF; };
宏
- 宏命名規(guī)則使用大寫字母,用下劃線分隔單詞。 #define MAX_LENGTH 50 #define MAX(a, b) (a)>(b)?(a):(b)
集合名稱
- 集合名稱使用復(fù)數(shù),其它與變量名規(guī)范相同。 GList* edges = g_list_new(); vector<Edge> edges; typedef vector<Edge> EdgeVector; typedef map<string, EdgeVector> EdgeMap; typedef list<EdgeMap> EdgeList;
格式
{}規(guī)則
- “{“與”}”單獨(dú)占一行。
- “{“與”}”與上一行行首對(duì)齊。
- If與while后哪怕只有一句話,也要加上“{“與”}”。 while (*(buf+p++) != ' ') printf("hello\n");
()規(guī)則
- "("與前一個(gè)關(guān)鍵字之間留一個(gè)空格。
- "("與前函數(shù)名之間不需要留一個(gè)空格。
- Return語(yǔ)句盡可能不要用"()" return (a*b^2>100)?(a):(b);
縮進(jìn)規(guī)則
- 縮進(jìn)永遠(yuǎn)為4。
- 用空格代替tab。
- Tab永遠(yuǎn)用4。
- 如果縮進(jìn)超過5層,考慮代碼優(yōu)化。
列長(zhǎng)度
- 一列不應(yīng)該超過80個(gè)英文字符。
- 一個(gè)聲明占一行
- 一個(gè)聲明占一行。
三元表達(dá)式
- 條件表達(dá)式占一行
- then與else應(yīng)單獨(dú)占一行。 (condition)???funct1()?:?func2();??? Or(condition)??long?statement:?another?long?statement;
頭文件順序
- 頭文件應(yīng)當(dāng)按照與功能的特點(diǎn)性從高到低排列。順序?yàn)?/li>
- 當(dāng)前目錄的頭文件。
- 自行開發(fā)庫(kù)的頭文件。
- 第三方庫(kù)的頭文件。
- 標(biāo)準(zhǔn)C++頭文件。
- 標(biāo)準(zhǔn)C頭文件。
空格
- 操作符需要加上空格。
- 關(guān)鍵字前后要加上空格。
- 逗號(hào)后要加上空格。
- 冒號(hào)后要加上空格。
- 在一行內(nèi)的分號(hào)后要加上空格,行末的分號(hào)不要空格。 fun(a, b); for (int I = 0; I < 50; i++);
類與結(jié)構(gòu)
類文件與結(jié)構(gòu)文件命名
- 公有類,C中用以模擬類的結(jié)構(gòu),需要位于一個(gè)獨(dú)立的文件中。
- 文件名與公有類名,C中用以模擬類的結(jié)構(gòu)名相同。
類與結(jié)構(gòu)頭文件布局
- 文件描述,使用Doxygen語(yǔ)法。
- 頭文件保護(hù)宏。
- 頭文件。
- 類或結(jié)構(gòu)描述,使用Doxygen語(yǔ)法。
- 類或結(jié)構(gòu)名。
- 屬性描述,使用Doxygen語(yǔ)法。以下每個(gè)屬性或方法都要求對(duì)應(yīng)一個(gè)描述。
- 屬性聲明。
- C++與身命周期相關(guān)函數(shù)聲明。C++中的構(gòu)造方法,析構(gòu)方法以及工廠方法。
- C++操作符重載。
- C++訪問器,get與set方法。
轉(zhuǎn)載于:https://www.cnblogs.com/wangkangluo1/archive/2011/06/02/2068789.html
總結(jié)
- 上一篇: 标记【新公司】!!!!!!!!!!
- 下一篇: GIS数据的查找,插入,删除,更新(Ar