本規范主要針對單片機編程語言和08編譯器而言,包括排版、注釋、命名、變量使用、代碼可測性、程序效率、質量保證等內容。
2 x X) @- q) m3 ]1.基本規則
1 X1 Z8 p$ O( d+ c; H& N$ {3 e$ R格式清晰、注釋簡明扼要、命名規范易懂、函數模塊化、程序易讀易維護、功能準確實現、代碼空間效率和時間效率高、適度的可擴展性、單片機編程規范-標識符命名 + R% b2 e+ q- g- R
2.標識符命名 2.1 命名基本原則 ! F% l' [/ S/ b) w% e1 V5 f: e
(1)命名清晰明了,有明確含義,使用完整單詞或約定俗成的縮寫。通常,較短的單詞可通過去掉元音字母形成縮寫;較長的單詞可取單詞的頭幾個字母形成縮寫。即"見名知意"。(2)命名風格要自始至終保持一致。 7 M' A; f1 @0 b4 t
(3)命名中若使用特殊約定或縮寫,要有注釋說明。
' w' ?3 ]8 a* B" E(4)同一軟件產品內模塊之間接口部分的標識符名稱之前加上模塊標識。7 ^ c! |5 p0 X. R+ M
2.2 宏和常量命名
$ c7 |6 H7 t2 p* m- @宏和常量用全部大寫字母來命名,詞與詞之間用下劃線分隔。對程序中用到的數字均應用有意義的枚舉或宏來代替。
9 A. y4 @) }" ^( v# Q6 ~2.3 變量命名
8 X; H7 n, I( D4 u$ L變量名用小寫字母命名,每個詞的第一個字母大寫。類型前綴(u8\s8 etc.)全局變量另加前綴g_。
: l" ^2 _* c9 s局部變量應簡明扼要。局部循環體控制變量優先使用i、j、k等;局部長度變量優先使用len、num等;臨時中間變量優先使用temp、tmp等。4 E; o# V2 S1 u" A
2.4 函數命名 . p6 A1 R8 G; I- Y) W) b* @
函數名用小寫字母命名,每個詞的第一個字母大寫,并將模塊標識加在最前面。
7 N- U+ m* i* v. V" N0 n2 L2.5 文件命名
) m. |" A/ ~+ T一個文件包含一類功能或一個模塊的所有函數,文件名稱應清楚表明其功能或性質。
1 G/ l. ^8 W: f ]. {每個.c文件應該有一個同名的.h文件作為頭文件。
' B: M: ^. {# ?0 I( m+ s3.注釋 3.1 注釋基本原則 `, G2 c7 h- Z2 w3 P7 {
有助于對程序的閱讀理解,說明程序在"做什么",解釋代碼的目的、功能和采用的方法。
5 S) K1 B. G5 j: @一般情況源程序有效注釋量在30%左右。6 h9 e3 e9 v# x% o' \0 F8 A
注釋語言必須準確、易懂、簡潔。
: Y* T5 T+ R9 ]. d I8 z( s邊寫代碼邊注釋,修改代碼同時修改相應的注釋,不再有用的注釋要刪除。; G* J5 K6 |; p- P/ z6 M) G2 z2 G3 b
匯編和C中都用"//",取消";" 不使用段注釋" /* */ "(調試時可用)
" j9 I. b2 A6 E7 ]+ b3.2 文件注釋
: }) r3 M7 U! ?( b文件注釋必須說明文件名、函數功能、創建人、創建日期、版本信息等相關信息。9 j+ e: \4 w+ V4 f! f5 X4 Y/ ?
修改文件代碼時,應在文件注釋中記錄修改日期、修改人員,并簡要說明此次修改的目的。所有修改記錄必須保持完整。
/ g6 n- j- a4 c文件注釋放在文件頂端,用"/*……*/"格式包含。
5 B6 L9 n4 E; F4 H+ `注釋文本每行縮進4個空格;每個注釋文本分項名稱應對齊。
1 H, I. N7 V+ `! M. p$ N* C/***********************************************************) X1 ~* M" |) T) x" E! K3 v( g
文件名稱:
# U& M7 D) J y作 者:7 E# {6 }4 }9 }- c
版 本:
1 h8 ]" v* E$ _5 [+ x' J3 P說 明:
6 M7 q+ m! T' G l! i: C: U* k修改記錄:' j1 ?2 h- C, Y: W9 j
***********************************************************/
- \% s, m6 a& @% Y3.3 函數注釋 6 p# R, c1 b/ G+ _
3.3.1 函數頭部注釋
7 w) W- l% H! D& G函數頭部注釋應包括函數名稱、函數功能、入口參數、出口參數等內容。如有必要還可增加作者、創建日期、修改記錄(備注)等相關項目。1 U- N5 Y/ R6 R8 a
函數頭部注釋放在每個函數的頂端,用"/*……*/"的格式包含。其中函數名稱應簡寫為Name(),不加入、出口參數等信息。3 E" I0 |- W+ ^( W
/***********************************************************
: G+ \! J0 L( b8 m {7 W6 {函數名稱:
' ?! D, a, @0 V& C" f' J, g函數功能:
- x9 L: k9 ]) K$ D) O' F0 M入口參數:8 k. M4 ?" W- T5 D5 m
出口參數:5 r; C) P( J: s! R; d
備 注:0 r- r( E0 k3 s; B& g5 _
***********************************************************/7 W1 m( d- O6 D- H+ ?' \/ c
3.3.2 代碼注釋(信、盈、達‘騰訊:以一齊捂捂吧久零久要’)
; R- Y( A1 ?) ^* b( w6 i: V) A, {代碼注釋應與被注釋的代碼緊鄰,放在其上方或右方,不可放在下面。如放于上方則需與其上面的代碼用空行隔開。一般少量注釋應該添加在被注釋語句的行2尾,一個函數內的多個注釋左對齊;較多注釋則應加在上方且注釋行與被注釋的語句左對齊。
. ?4 u" ~* B' ]& u9 l9 c函數代碼注釋用"//…//"的格式。7 t2 E! W. Y6 m! p* j4 q
通常,分支語句(條件分支、循環語句等)必須編寫注釋。其程序塊結束行"}"的右方應加表明該程序塊結束的標記"end of ……", 尤其在多重嵌套時。+ I; R2 C" Q4 M9 N
3.4 變量、常量、宏的注釋
6 h) a# j4 Z. Y# i( ]同一類型的標識符應集中定義,并在定義之前一行對其共性加以統一注釋。對單個標識符的注釋加在定義語句的行尾。, d. A i2 V) o5 X6 a ~
全局變量一定要有詳細的注釋,包括其功能、取值范圍、哪些函數或過程存取它以及存取時的注意事項等。
6 V# o' P2 f& a. I注釋用"//…//"的格式。
4 F' L! Z0 A! {
, t7 c$ k2 f$ y- \/ v( w% ~ |