C51單片機編程規范
1單片機C51編程規范- 前言 2 單片機C51編程規范-范圍 3 單片機C51編程規范-總則 4 單片機C51編程規范-數據類(lèi)型定義 5 單片機C51編程規范-標識符命名 5.1 命名基本原則 5.2 宏和常量命名 5.3 變量命名 5.4 函數命名 5.5 文件命名 6 單片機C51編程規范-注釋 6.1 注釋基本原則 6.2 文件注釋 6.3 函數注釋 6.3.2 代碼注釋 6.4 變量、常量、宏的注釋 7 單片機C51編程規范-函數 7.1 設計原則
為了提高源程序的質(zhì)量和可維護性,從而最終提高軟件產(chǎn)品生產(chǎn)力,特編寫(xiě)此規范。
本標準規定了程序設計人員進(jìn)行程序設計時(shí)必須遵循的規范。本規范主要針對C51編程語(yǔ)言和keil編譯器而言,包括排版、注釋、命名、變量使用、代碼可測性、程序效率、質(zhì)量保證等內容。
l 格式清晰
l 注釋簡(jiǎn)明扼要
l 命名規范易懂
l 函數模塊化
l 程序易讀易維護
l 功能準確實(shí)現
l 代碼空間效率和時(shí)間效率高
l 適度的可擴展性
編程時(shí)統一采用下述新類(lèi)型名的方式定義數據類(lèi)型。
建立一個(gè)datatype.h文件,在該文件中進(jìn)行如下定義:
typedef bit BOOL; // 位變量 //
typedef unsigned char INT8U; // 無(wú)符號8位整型變量 //
typedef signed char INT8S; // 有符號8位整型變量 //
typedef unsigned int INT16U; // 無(wú)符號16位整型變量 //
typedef signed int INT16S; // 有符號16位整型變量 //
typedef unsigned long INT32U; // 無(wú)符號32位整型變量 //
typedef signed long INT32S; // 有符號32位整型變量 //
typedef float FP32; // 單精度浮點(diǎn)數(32位長(cháng)度) //
typedef double FP64; // 雙精度浮點(diǎn)數(64位長(cháng)度) //
l 命名要清晰明了,有明確含義,使用完整單詞或約定俗成的縮寫(xiě)。通常,較短的單詞可通過(guò)去掉元音字母形成縮寫(xiě);較長(cháng)的單詞可取單詞的頭幾個(gè)字母形成縮寫(xiě)。即見(jiàn)名知意。
l 命名風(fēng)格要自始至終保持一致。
l 命名中若使用特殊約定或縮寫(xiě),要有注釋說(shuō)明。
l 除了編譯開(kāi)關(guān)/頭文件等特殊應用,應避免使用以下劃線(xiàn)開(kāi)始和/或結尾的定義。
l 同一軟件產(chǎn)品內模塊之間接口部分的標識符名稱(chēng)之前加上模塊標識。
宏和常量用全部大寫(xiě)字母來(lái)命名,詞與詞之間用下劃線(xiàn)分隔。對程序中用到的數字均應用有意義的枚舉或宏來(lái)代替。
變量名用小寫(xiě)字母命名,每個(gè)詞的第一個(gè)字母大寫(xiě)。類(lèi)型前綴(u8s8 etc.)全局變量另加前綴g_。
局部變量應簡(jiǎn)明扼要。局部循環(huán)體控制變量?jì)?yōu)先使用i、j、k等;局部長(cháng)度變量?jì)?yōu)先使用len、num等;臨時(shí)中間變量?jì)?yōu)先使用temp、tmp等。
函數名用小寫(xiě)字母命名,每個(gè)詞的第一個(gè)字母大寫(xiě),并將模塊標識加在最前面。
一個(gè)文件包含一類(lèi)功能或一個(gè)模塊的所有函數,文件名稱(chēng)應清楚表明其功能或性質(zhì)。
每個(gè).c文件應該有一個(gè)同名的.h文件作為頭文件。
l 有助于對程序的閱讀理解,說(shuō)明程序在做什么,解釋代碼的目的、功能和采用的方法。
l 一般情況源程序有效注釋量在30%左右。
l 注釋語(yǔ)言必須準確、易懂、簡(jiǎn)潔。
l 邊寫(xiě)代碼邊注釋?zhuān)薷拇a同時(shí)修改相應的注釋?zhuān)辉儆杏玫淖⑨屢獎h除。
文件注釋必須說(shuō)明文件名、函數功能、創(chuàng )建人、創(chuàng )建日期、版本信息等相關(guān)信息。
修改文件代碼時(shí),應在文件注釋中記錄修改日期、修改人員,并簡(jiǎn)要說(shuō)明此次修改的目的。所有修改記錄必須保持完整。
文件注釋放在文件頂端,用/*……*/格式包含。
注釋文本每行縮進(jìn)4個(gè)空格;每個(gè)注釋文本分項名稱(chēng)應對齊。
/***********************************************************
文件名稱(chēng):
作 者:
版 本:
說(shuō) 明:
修改記錄:
***********************************************************/
6.3.1 函數頭部注釋
函數頭部注釋?xiě)ê瘮得Q(chēng)、函數功能、入口參數、出口參數等內容。如有必要還可增加作者、創(chuàng )建日期、修改記錄(備注)等相關(guān)項目。
函數頭部注釋放在每個(gè)函數的頂端,用/*……*/的格式包含。其中函數名稱(chēng)應簡(jiǎn)寫(xiě)為FunctionName(),不加入、出口參數等信息。
/***********************************************************
函數名稱(chēng):
函數功能:
入口參數:
出口參數:
備 注:
***********************************************************/
代碼注釋?xiě)c被注釋的代碼緊鄰,放在其上方或右方,不可放在下面。如放于上方則需與其上面的代碼用空行隔開(kāi)。一般少量注釋?xiě)撎砑釉诒蛔⑨屨Z(yǔ)句的行尾,一個(gè)函數內的多個(gè)注釋左對齊;較多注釋則應加在上方且注釋行與被注釋的語(yǔ)句左對齊。
函數代碼注釋用//…//的格式。
通常,分支語(yǔ)句(條件分支、循環(huán)語(yǔ)句等)必須編寫(xiě)注釋。其程序塊結束行}的右方應加表明該程序塊結束的標記end of ……, 尤其在多重嵌套時(shí)。
同一類(lèi)型的標識符應集中定義,并在定義之前一行對其共性加以統一注釋。對單個(gè)標識符的注釋加在定義語(yǔ)句的行尾。
全局變量一定要有詳細的注釋?zhuān)ㄆ涔δ?、取值范圍、哪些函數或過(guò)程存取它以及存取時(shí)的注意事項等。
注釋用//…//的格式。
函數的基本要求:
l 正確性:程序要實(shí)現設計要求的功能。
l 穩定性和安全性:程序運行穩定、可靠、安全。
l 可測試性:程序便于測試和評價(jià)。
l 規范/可讀性:程序書(shū)寫(xiě)風(fēng)格、命名規則等符合規范。
l 擴展性:代碼為下一次升級擴展留有空間和接口。
l 全局效率:軟件系統的整體效率高。
l 局部效率:某個(gè)模塊/子模塊/函數的本身效率高。
評論