本规范主要针对单片机编程语言和08编译器而言,包括排版、注释、命名、变量使用、代码可测性、程序效率、质量保证等内容。
- K/ y! ?- [6 n: o/ H% F. U$ u1.基本规则 " D- W( F7 Y. m. C' o) m0 w
格式清晰、注释简明扼要、命名规范易懂、函数模块化、程序易读易维护、功能准确实现、代码空间效率和时间效率高、适度的可扩展性、单片机编程规范-标识符命名
& S% @2 g6 b" W% ~# G2.标识符命名 2.1 命名基本原则 ) U7 ^" V) [( ^7 }8 J1 G* O
(1)命名清晰明了,有明确含义,使用完整单词或约定俗成的缩写。通常,较短的单词可通过去掉元音字母形成缩写;较长的单词可取单词的头几个字母形成缩写。即"见名知意"。(2)命名风格要自始至终保持一致。 , ?/ I, x( x$ T. t: N
(3)命名中若使用特殊约定或缩写,要有注释说明。8 T* L' ?) B0 D" ?, A7 e
(4)同一软件产品内模块之间接口部分的标识符名称之前加上模块标识。
; i( f6 u0 |+ `) o$ m5 [" n2.2 宏和常量命名 . K' @( h; J3 V" E" \5 T: ^
宏和常量用全部大写字母来命名,词与词之间用下划线分隔。对程序中用到的数字均应用有意义的枚举或宏来代替。
5 W. T. @' w5 j8 t: r# y4 _2.3 变量命名
( z1 N) l" o! b! Z3 P, J4 r- u变量名用小写字母命名,每个词的第一个字母大写。类型前缀(u8\s8 etc.)全局变量另加前缀g_。, Q: ~ _7 {5 b- y3 q- y
局部变量应简明扼要。局部循环体控制变量优先使用i、j、k等;局部长度变量优先使用len、num等;临时中间变量优先使用temp、tmp等。2 h; `) _% m+ W. ~" k
2.4 函数命名 5 B) e( G6 H2 m7 i% Z
函数名用小写字母命名,每个词的第一个字母大写,并将模块标识加在最前面。5 i/ o% b- L* T6 P6 b
2.5 文件命名 9 W' X+ X4 N$ L$ m2 V2 n
一个文件包含一类功能或一个模块的所有函数,文件名称应清楚表明其功能或性质。5 r9 I5 r X. D& G
每个.c文件应该有一个同名的.h文件作为头文件。
; [7 o0 f2 p* [. \* I/ o: R/ ?0 \8 P3.注释 3.1 注释基本原则 $ I3 T1 G% [0 n1 ^2 {. n- }, s% B
有助于对程序的阅读理解,说明程序在"做什么",解释代码的目的、功能和采用的方法。
4 C) A* y7 ^+ F' m$ L/ ?一般情况源程序有效注释量在30%左右。, U& v/ f4 y- Q! R5 T
注释语言必须准确、易懂、简洁。
2 h2 {" D+ R) r7 f; }3 j6 R$ P边写代码边注释,修改代码同时修改相应的注释,不再有用的注释要删除。
p! q/ F1 Y# H- ^: B汇编和C中都用"//",取消";" 不使用段注释" /* */ "(调试时可用)
% @. p" ~4 ?( |" p/ O# k. e- m3.2 文件注释 $ c/ D; T3 Q7 N8 o- k, \* s
文件注释必须说明文件名、函数功能、创建人、创建日期、版本信息等相关信息。
3 }9 p! s' t# n4 ?& d, p修改文件代码时,应在文件注释中记录修改日期、修改人员,并简要说明此次修改的目的。所有修改记录必须保持完整。' c- n/ O7 F, d6 r. G9 F$ p
文件注释放在文件顶端,用"/*……*/"格式包含。
$ c2 w4 L. x& B注释文本每行缩进4个空格;每个注释文本分项名称应对齐。
\9 s8 N0 V% J6 X- w) x. ~/***********************************************************) }8 @4 @6 v; A( E. o5 P/ H& g
文件名称:0 q# t9 w j9 s% d) l# l( Z
作 者:
+ F+ P# i* w+ i5 Q& ?版 本:* n0 Y2 ]! R. B5 _/ }+ C- R. c
说 明:1 U) s# a+ \# i" R
修改记录:
, p K: Q$ S9 \3 j" k***********************************************************/- K6 F0 c! R& S# A, s
3.3 函数注释 * u( t1 V# m) i" Y4 g! @/ {
3.3.1 函数头部注释& y- H1 ?& E% d+ d9 H6 y
函数头部注释应包括函数名称、函数功能、入口参数、出口参数等内容。如有必要还可增加作者、创建日期、修改记录(备注)等相关项目。8 E+ ^0 S# b* x% ~& B6 N5 p6 n
函数头部注释放在每个函数的顶端,用"/*……*/"的格式包含。其中函数名称应简写为Name(),不加入、出口参数等信息。
' c. \$ @& c0 N% Y1 H/***********************************************************
6 t+ G7 G1 |: ]+ d函数名称:
5 }! Z4 `( u% d( b' v$ b F$ H函数功能:
% E: C* j1 E% r& N- P. s# U* d1 E' |入口参数:
2 {0 U+ A* V/ |+ k: v4 l出口参数:( P7 r% F% V* R; A
备 注:& k( `0 o3 y" j' w# E s* l; }6 u+ p7 f
***********************************************************/2 l3 h7 O5 N& `7 j$ v4 x
3.3.2 代码注释(信、盈、达‘腾讯:以一齐捂捂吧久零久要’)! c# T) W! {8 ~& A$ t% S
代码注释应与被注释的代码紧邻,放在其上方或右方,不可放在下面。如放于上方则需与其上面的代码用空行隔开。一般少量注释应该添加在被注释语句的行2尾,一个函数内的多个注释左对齐;较多注释则应加在上方且注释行与被注释的语句左对齐。9 T! n1 T7 @) g
函数代码注释用"//…//"的格式。
9 g' y4 ?7 m4 L& b9 q; H4 x; S通常,分支语句(条件分支、循环语句等)必须编写注释。其程序块结束行"}"的右方应加表明该程序块结束的标记"end of ……", 尤其在多重嵌套时。- w+ f* H! Y+ o
3.4 变量、常量、宏的注释
5 N/ N' U# \0 T! k6 Z同一类型的标识符应集中定义,并在定义之前一行对其共性加以统一注释。对单个标识符的注释加在定义语句的行尾。8 \5 ?/ E$ P# N4 |" X
全局变量一定要有详细的注释,包括其功能、取值范围、哪些函数或过程存取它以及存取时的注意事项等。
- R1 X7 b& c( G+ {1 X* L注释用"//…//"的格式。 ! k9 W0 {3 j. q4 b7 ^ [
' z+ H% G& n7 P- d; |' g/ O; ? |