C51的編程規(guī)范說(shuō)明
現(xiàn)在單片機(jī)的程序設(shè)計(jì),C51已經(jīng)得到廣泛的推廣和應(yīng)用,算是單片機(jī)的主流設(shè)計(jì)程序,甚至可以說(shuō)作為單片機(jī)開發(fā)人員必須要掌握的一門語(yǔ)言了。
作為一門工具,最終的目的就是實(shí)現(xiàn)功能。在滿足這個(gè)前提條件下,我們希望我們的程序能很容易地被別人讀懂,或者能夠很容易地讀懂別人的程序,在團(tuán)體合作開發(fā)中就能起到事半功倍之效。在網(wǎng)上請(qǐng)求幫助時(shí),如能以規(guī)范的寫法貼出程序,網(wǎng)友會(huì)比較容易地明白你的問(wèn)題,則會(huì)比較快的得到網(wǎng)友的幫助,否則讓人看上半天也不明所以然,這樣就達(dá)不到預(yù)期的效果了。因此,為了便于源程序的交流,減少合作開發(fā)中的障礙,希望大家能夠探討一下C51的編程規(guī)范。把各人認(rèn)為好的建議提出來(lái),然后做一個(gè)總結(jié),作為一種大家一致認(rèn)同的規(guī)范,我認(rèn)為將會(huì)是一件很有意義的事。我先提出一些自已的想法,以此拋磚引玉。
一、注釋
1,采用中文;
2,開始的注釋:
文件(模塊)注釋內(nèi)容:
公司名稱、版權(quán)、作者名稱、修改時(shí)間、模塊功能、背景介紹等,復(fù)雜的算法需要加上流程說(shuō)明;
比如:
/***********************************************************/
/*公司名稱: */
/*模 塊 名: LCD 模塊 LCD 型號(hào):HD44780 */
/*創(chuàng) 建 人:zhaojunjie 日期:2001-06-08 */
/*修 改 人: 日期:2001-06-08 */
/*功能描述: */
/*其他說(shuō)明: */
/*版 本:
/*************************************************************/
函數(shù)開頭的注釋內(nèi)容:
函數(shù)名稱、功能、說(shuō)明 輸入、返回、函數(shù)描述、流程處理、全局變量、調(diào)用樣例等,復(fù)雜的函數(shù)需要加上變量用途說(shuō)明;
/**************************************************************
*
* 函 數(shù) 名: v_LcdInit
* 功能描述: LCD初始化
* 函數(shù)說(shuō)明: 初始化命令:0x3c, 0x08, 0x01, 0x06, 0x10, 0x0c
* 調(diào)用函數(shù): v_Delaymsec(),v_LcdCmd()
* 全局變量:
* 輸 入: 無(wú)
* 返 回: 無(wú)
* 設(shè) 計(jì) 者:zhao 日期:2001-12-09
* 修 改 者:zhao 日期:2001-12-09
* 版 本:
****************************************************************/
3、程序中的注釋內(nèi)容:
修改時(shí)間和作者、方便理解的注釋等。注釋內(nèi)容應(yīng)簡(jiǎn)煉、清楚、明了,一目了然的語(yǔ)句不加注釋。
二、命名:
命名必須具有一定的實(shí)際意義。
1、常量的命名:全部用大寫。
2、變量的命名:
變量名加前綴,前綴反映變量的數(shù)據(jù)類型,用小寫,反映變量意義的第一個(gè)字母大寫,其他小寫。
其中變量數(shù)據(jù)類型:
unsigned char 前綴 uc signed char 前綴 sc
unsigned int 前綴 ui signed int 前綴 si
unsigned long 前綴 ul signed long 前綴 sl
bit 前綴 b 指針 前綴 p
例:ucReceivData 接收數(shù)據(jù)
3、結(jié)構(gòu)體命名:
4、函數(shù)的命名:
函數(shù)名首字大寫,若包含有兩個(gè)單詞的每個(gè)單詞首字母大寫。
函數(shù)原型說(shuō)明包括:引用外來(lái)函數(shù)及內(nèi)部函數(shù),外部引用必須在右側(cè)注明函數(shù)來(lái)源: 模塊名及文件名, 內(nèi)部函數(shù),只要注釋其定義文件名;
三、編輯風(fēng)格
1、縮進(jìn):縮進(jìn)以 Tab 為單位,一個(gè) Tab 為四個(gè)空格大小。預(yù)處理語(yǔ)句、全局?jǐn)?shù)據(jù)、函數(shù)原型、標(biāo)題、附加說(shuō)明、函數(shù)說(shuō)明、標(biāo)號(hào)等均頂格書寫。語(yǔ)句塊的“{”“}”配對(duì)對(duì)齊,并與其前一行對(duì)齊;
2、空格:數(shù)據(jù)和函數(shù)在其類型,修飾名稱之間適當(dāng)空格并據(jù)情況對(duì)齊。關(guān)鍵字原則上空一格,如:
if ( ... ) 等,運(yùn)算符的空格規(guī)定如下:“->”、“[”、“]”、“++”、“--”、“~”、“!”、“+”、“-”(指正負(fù)號(hào)),“”(取址或引用)、“*”(指使用指針時(shí))等幾個(gè)運(yùn)算符兩邊不空格(其中單目運(yùn)算符系指與操作數(shù)相連的一邊),其它運(yùn)算符(包括大多數(shù)二目運(yùn)算符和三目運(yùn)算符“?:”兩邊均空一格,“(”、“)”運(yùn)算符在其內(nèi)側(cè)空一格,在作函數(shù)定義時(shí)還可據(jù)情況多空或不空格來(lái)對(duì)齊,但在函數(shù)實(shí)現(xiàn)時(shí)可以不用。“,”運(yùn)算符只在其后空一格,需對(duì)齊時(shí)也可不空或多空格,對(duì)語(yǔ)句行后加的注釋應(yīng)用適當(dāng)空格與語(yǔ)句隔開并盡可能對(duì)齊。
3、對(duì)齊:原則上關(guān)系密切的行應(yīng)對(duì)齊,對(duì)齊包括類型、修飾、名稱、參數(shù)等各部分對(duì)齊。另每一行的長(zhǎng)度不應(yīng)超過(guò)屏幕太多,必要時(shí)適當(dāng)換行,換行時(shí)盡可能在“,”處或運(yùn)算符處,換行后最好以運(yùn)算符打頭,并且以下各行均以該語(yǔ)句首行縮進(jìn),但該語(yǔ)句仍以首行的縮進(jìn)為準(zhǔn),即如其下一行為“{”應(yīng)與首行對(duì)齊。
4、空行:程序文件結(jié)構(gòu)各部分之間空兩行,若不必要也可只空一行,各函數(shù)實(shí)現(xiàn)之間一般空兩行
5、修改:版本封存以后的修改一定要將老語(yǔ)句用/* */ 封閉,不能自行刪除或修改,并要在文件及函數(shù)的修改記錄中加以記錄。
6、形參:在定義函數(shù)時(shí),在函數(shù)名后面括號(hào)中直接進(jìn)行形式參數(shù)說(shuō)明,不再另行說(shuō)明。
評(píng)論