本規范主要針對單片機編程語言和08編譯器而言,包括排版、注釋、命名、變量使用、代碼可測性、程序效率、質量保證等內容。
3 R5 H& ^# f( I, |; f$ Y1 ~+ y1.基本規則
8 g4 j( L, R' G t& L格式清晰、注釋簡明扼要、命名規范易懂、函數模塊化、程序易讀易維護、功能準確實現、代碼空間效率和時間效率高、適度的可擴展性、單片機編程規范-標識符命名 ) o; \6 @0 z4 U6 x7 I
2.標識符命名 2.1 命名基本原則
& T7 h* t, ]5 o(1)命名清晰明了,有明確含義,使用完整單詞或約定俗成的縮寫。通常,較短的單詞可通過去掉元音字母形成縮寫;較長的單詞可取單詞的頭幾個字母形成縮寫。即"見名知意"。(2)命名風格要自始至終保持一致。
! j) D8 U5 e9 j2 w* D7 i(3)命名中若使用特殊約定或縮寫,要有注釋說明。9 v2 \. f. I. o. Q* G6 W6 f
(4)同一軟件產品內模塊之間接口部分的標識符名稱之前加上模塊標識。* a5 J$ _! i( y5 F7 H
2.2 宏和常量命名
- }; g' D% U* b1 L/ ]( u" B/ K1 W宏和常量用全部大寫字母來命名,詞與詞之間用下劃線分隔。對程序中用到的數字均應用有意義的枚舉或宏來代替。
/ Z" R; m9 |/ o+ d2.3 變量命名
* ^% H# @ ~ l0 z變量名用小寫字母命名,每個詞的第一個字母大寫。類型前綴(u8\s8 etc.)全局變量另加前綴g_。- @- y( K. n& V4 m3 ^
局部變量應簡明扼要。局部循環體控制變量優先使用i、j、k等;局部長度變量優先使用len、num等;臨時中間變量優先使用temp、tmp等。- t8 I6 N3 Z* P2 \: w8 V$ |$ ~* v9 M
2.4 函數命名
. y7 g; f+ {) H. B1 U函數名用小寫字母命名,每個詞的第一個字母大寫,并將模塊標識加在最前面。
o, _4 |2 `; g W% v7 Q& K0 f2.5 文件命名
" Y. A7 Q" q) h7 P1 m) u: X) r/ w一個文件包含一類功能或一個模塊的所有函數,文件名稱應清楚表明其功能或性質。0 M+ [" E6 U6 _- l+ `* \
每個.c文件應該有一個同名的.h文件作為頭文件。 0 B/ [& h- o& n3 l
3.注釋 3.1 注釋基本原則
+ h& i: S9 j! p3 L4 A: F有助于對程序的閱讀理解,說明程序在"做什么",解釋代碼的目的、功能和采用的方法。
6 M o) s( A) z( }$ z一般情況源程序有效注釋量在30%左右。
! A; d6 k5 r' I0 B+ v/ p注釋語言必須準確、易懂、簡潔。: z4 W4 _1 ~$ x4 F( j; Y
邊寫代碼邊注釋,修改代碼同時修改相應的注釋,不再有用的注釋要刪除。
1 W8 Y4 C4 B" X0 i匯編和C中都用"//",取消";" 不使用段注釋" /* */ "(調試時可用)
4 ]3 i$ d. Q% H8 N$ F3.2 文件注釋
# P* ?5 J+ v. F- B文件注釋必須說明文件名、函數功能、創建人、創建日期、版本信息等相關信息。- O' D. z6 k' \
修改文件代碼時,應在文件注釋中記錄修改日期、修改人員,并簡要說明此次修改的目的。所有修改記錄必須保持完整。
5 G3 r$ m+ N( T; I" q文件注釋放在文件頂端,用"/*……*/"格式包含。
, o$ ~9 S) U4 l' y+ \1 P+ {注釋文本每行縮進4個空格;每個注釋文本分項名稱應對齊。
" I2 I' y c. [/***********************************************************+ X" H! u" F# ~& J
文件名稱:; V( \. x3 f: q- o
作 者:) ~& s1 Y* C; t5 n/ R! W
版 本:
( L7 ?* s& Z/ C: K8 G: \說 明:) E& V7 j7 _; ~9 e# g, X
修改記錄:/ r: b) z. l5 r. V, j
***********************************************************/& d" D+ v4 _. u: C3 J& {0 n. P
3.3 函數注釋
- G. ]: v0 g" b. g+ K. l3.3.1 函數頭部注釋
2 A3 t P5 m4 q- g% m! R函數頭部注釋應包括函數名稱、函數功能、入口參數、出口參數等內容。如有必要還可增加作者、創建日期、修改記錄(備注)等相關項目。
. X* q; q8 \1 ^0 D3 q( `函數頭部注釋放在每個函數的頂端,用"/*……*/"的格式包含。其中函數名稱應簡寫為Name(),不加入、出口參數等信息。3 V0 b+ @6 u$ _" N9 E$ ]% H
/***********************************************************
$ @) m7 V! ]! Z- @; j5 D函數名稱:, L( s* L7 M( ] q0 [$ C
函數功能:
+ @/ T; p: v4 F1 |+ R/ I! w: V入口參數: | m: L9 t$ M! m( H$ t( _
出口參數:
' Z# C! }2 h7 }, P0 L& d備 注:
1 B9 C& s, |$ A***********************************************************/8 C) \' n4 y0 G. Q# k8 N8 g
3.3.2 代碼注釋(信、盈、達‘騰訊:以一齊捂捂吧久零久要’)3 c& t2 G+ K1 V6 f4 L
代碼注釋應與被注釋的代碼緊鄰,放在其上方或右方,不可放在下面。如放于上方則需與其上面的代碼用空行隔開。一般少量注釋應該添加在被注釋語句的行2尾,一個函數內的多個注釋左對齊;較多注釋則應加在上方且注釋行與被注釋的語句左對齊。
7 b- h; ~" Q6 p4 C函數代碼注釋用"//…//"的格式。
, h% }7 k, F! }6 C; P通常,分支語句(條件分支、循環語句等)必須編寫注釋。其程序塊結束行"}"的右方應加表明該程序塊結束的標記"end of ……", 尤其在多重嵌套時。" x0 r$ T* I. P: a
3.4 變量、常量、宏的注釋 # T5 j @; N$ ]$ t8 A5 c9 [5 b
同一類型的標識符應集中定義,并在定義之前一行對其共性加以統一注釋。對單個標識符的注釋加在定義語句的行尾。
9 C: h F# k9 x) K' F6 j全局變量一定要有詳細的注釋,包括其功能、取值范圍、哪些函數或過程存取它以及存取時的注意事項等。7 L0 A* z% @2 B9 W2 g" }3 b
注釋用"//…//"的格式。
# t' T8 j4 @8 k3 ` " w& ~) ~9 _! u! V# a
|