本規范主要針對單片機編程語言和08編譯器而言,包括排版、注釋、命名、變量使用、代碼可測性、程序效率、質量保證等內容。
$ B+ T y$ ?, h$ Z. L; X5 D1.基本規則 2 L4 k9 k, ^ ` |5 ?
格式清晰、注釋簡明扼要、命名規范易懂、函數模塊化、程序易讀易維護、功能準確實現、代碼空間效率和時間效率高、適度的可擴展性、單片機編程規范-標識符命名
6 J7 C* m2 n; N2.標識符命名 2.1 命名基本原則 0 Q- W4 Q, H! O: F a0 e' P
(1)命名清晰明了,有明確含義,使用完整單詞或約定俗成的縮寫。通常,較短的單詞可通過去掉元音字母形成縮寫;較長的單詞可取單詞的頭幾個字母形成縮寫。即"見名知意"。(2)命名風格要自始至終保持一致。
: u* f4 j& P& x4 c8 |2 D- @ {- ~(3)命名中若使用特殊約定或縮寫,要有注釋說明。
: O" A: j9 ~! F(4)同一軟件產品內模塊之間接口部分的標識符名稱之前加上模塊標識。" a" L( ~; x: ^3 H/ V- }8 u2 W2 v
2.2 宏和常量命名 & e/ c" B; R# a3 v \
宏和常量用全部大寫字母來命名,詞與詞之間用下劃線分隔。對程序中用到的數字均應用有意義的枚舉或宏來代替。
& P" l" n- l$ s8 C9 k/ `7 f2.3 變量命名 8 l8 t- S- i1 b: ~! G; C0 h2 \) i
變量名用小寫字母命名,每個詞的第一個字母大寫。類型前綴(u8\s8 etc.)全局變量另加前綴g_。
) Y8 c+ b& g1 u R6 z( B; I( q局部變量應簡明扼要。局部循環體控制變量優先使用i、j、k等;局部長度變量優先使用len、num等;臨時中間變量優先使用temp、tmp等。( h' G% t2 R; Z+ z+ D7 m; ]
2.4 函數命名 6 r2 @7 [1 i1 f% N/ h
函數名用小寫字母命名,每個詞的第一個字母大寫,并將模塊標識加在最前面。" M1 q5 ^1 C0 u0 y' o" s
2.5 文件命名
3 I" p" V( S/ |( n Y8 ^& I+ j一個文件包含一類功能或一個模塊的所有函數,文件名稱應清楚表明其功能或性質。
! |7 O8 p! c8 N4 x' i每個.c文件應該有一個同名的.h文件作為頭文件。
0 ?9 X; S* l* G# h( W: a: n3.注釋 3.1 注釋基本原則
% w4 U. V4 d5 `4 \+ n9 l+ j有助于對程序的閱讀理解,說明程序在"做什么",解釋代碼的目的、功能和采用的方法。 B w; @$ X. T' E8 I# w
一般情況源程序有效注釋量在30%左右。' |3 P8 ]4 {9 D. Q% S
注釋語言必須準確、易懂、簡潔。! b1 {' }6 g3 Y* U
邊寫代碼邊注釋,修改代碼同時修改相應的注釋,不再有用的注釋要刪除。! s, \- r7 ~ N2 `5 r' V
匯編和C中都用"//",取消";" 不使用段注釋" /* */ "(調試時可用) ( o, ~0 `8 \+ C u1 q6 K/ I
3.2 文件注釋 0 P& V; U0 Y3 b( D4 z/ g( ]6 W
文件注釋必須說明文件名、函數功能、創建人、創建日期、版本信息等相關信息。
% _9 S. Z4 u; z$ ^& q修改文件代碼時,應在文件注釋中記錄修改日期、修改人員,并簡要說明此次修改的目的。所有修改記錄必須保持完整。" [) b5 o/ {' K: {( i( n( E# B
文件注釋放在文件頂端,用"/*……*/"格式包含。! }* [7 O& H6 @/ Y
注釋文本每行縮進4個空格;每個注釋文本分項名稱應對齊。2 T5 |' \1 f' F
/***********************************************************4 {" u$ p; p8 K5 ] p2 z1 R
文件名稱:
2 J) p, ^. \) v* ]作 者:) h/ H% T7 F6 c7 v, _
版 本:3 V) A. \ I2 y. \( m* a7 z9 _
說 明:
) \, T+ _ P9 l+ Z9 `* x* \修改記錄:& {- p# ]) T' g
***********************************************************/ f) h1 S9 `& R6 i& ?2 E+ {
3.3 函數注釋 6 g' }3 z$ h& y7 [+ E
3.3.1 函數頭部注釋
+ [, Z& A4 Y3 i2 @8 G函數頭部注釋應包括函數名稱、函數功能、入口參數、出口參數等內容。如有必要還可增加作者、創建日期、修改記錄(備注)等相關項目。2 W8 {$ m: a/ a, C+ S/ b
函數頭部注釋放在每個函數的頂端,用"/*……*/"的格式包含。其中函數名稱應簡寫為Name(),不加入、出口參數等信息。
1 N$ \. @3 U! r: c/ ^ P+ d/***********************************************************
6 X3 E1 h$ y- y. G" k函數名稱:6 H) C: m2 }2 e; M
函數功能:# v' \- O) C- ^2 X5 t# P. y+ K: H
入口參數:
; X z3 \& I a4 o, M出口參數:* u3 X2 f8 W4 q5 a& C e
備 注:8 ^9 }/ I' G* `7 K2 L& U
***********************************************************/9 J5 Q( d. q4 w' T* Y/ T& R: \, Z
3.3.2 代碼注釋(信、盈、達‘騰訊:以一齊捂捂吧久零久要’)
5 {# w9 U8 X0 u& B. Y# @代碼注釋應與被注釋的代碼緊鄰,放在其上方或右方,不可放在下面。如放于上方則需與其上面的代碼用空行隔開。一般少量注釋應該添加在被注釋語句的行2尾,一個函數內的多個注釋左對齊;較多注釋則應加在上方且注釋行與被注釋的語句左對齊。
& z, M4 _% a- V8 ~' n1 m' g函數代碼注釋用"//…//"的格式。. W) d" \" Y3 o8 a i2 d
通常,分支語句(條件分支、循環語句等)必須編寫注釋。其程序塊結束行"}"的右方應加表明該程序塊結束的標記"end of ……", 尤其在多重嵌套時。
6 G4 i9 k. _- r) Q' H: i3.4 變量、常量、宏的注釋
3 {8 y: D7 B4 l3 z1 a( h- c同一類型的標識符應集中定義,并在定義之前一行對其共性加以統一注釋。對單個標識符的注釋加在定義語句的行尾。' y% `' x% O& }$ A- v9 B
全局變量一定要有詳細的注釋,包括其功能、取值范圍、哪些函數或過程存取它以及存取時的注意事項等。
: x! h9 R* R2 }" |, c; w( Q注釋用"//…//"的格式。 : u8 Z3 m5 W# W3 j
, \/ K2 y0 u( w4 T |