機(jī)械社區(qū)

 找回密碼
 注冊(cè)會(huì)員

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3105|回復(fù): 5
打印 上一主題 下一主題

單片機(jī)開(kāi)發(fā)之C語(yǔ)言編程基本規(guī)范

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2017-8-6 10:30:29 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本規(guī)范主要針對(duì)單片機(jī)編程語(yǔ)言和08編譯器而言,包括排版、注釋、命名、變量使用、代碼可測(cè)性、程序效率、質(zhì)量保證等內(nèi)容。   F/ E8 b: J: D, Q
1.基本規(guī)則
6 K( x9 Z  M- Q% c. F
格式清晰、注釋簡(jiǎn)明扼要、命名規(guī)范易懂、函數(shù)模塊化、程序易讀易維護(hù)、功能準(zhǔn)確實(shí)現(xiàn)、代碼空間效率和時(shí)間效率高、適度的可擴(kuò)展性、單片機(jī)編程規(guī)范-標(biāo)識(shí)符命名   f5 t9 V8 _9 S+ j9 Z" q
2.標(biāo)識(shí)符命名 2.1 命名基本原則 ( Z3 k' @1 Q* w* |0 Z% [4 K
1)命名清晰明了,有明確含義,使用完整單詞或約定俗成的縮寫。通常,較短的單詞可通過(guò)去掉元音字母形成縮寫;較長(zhǎng)的單詞可取單詞的頭幾個(gè)字母形成縮寫。即"見(jiàn)名知意"。(2)命名風(fēng)格要自始至終保持一致。 2 O0 M5 A- z8 Y8 @7 p
3)命名中若使用特殊約定或縮寫,要有注釋說(shuō)明。
; D: `  b' z. ?* d/ N
4)同一軟件產(chǎn)品內(nèi)模塊之間接口部分的標(biāo)識(shí)符名稱之前加上模塊標(biāo)識(shí)。# b2 u9 s3 _7 S" X9 R
2.2 宏和常量命名 # F1 `$ o; q& z& L) s6 ~! E
宏和常量用全部大寫字母來(lái)命名,詞與詞之間用下劃線分隔。對(duì)程序中用到的數(shù)字均應(yīng)用有意義的枚舉或宏來(lái)代替。6 K+ g6 a/ i3 G  O9 V/ M. r. c& h
2.3 變量命名
" Y9 I$ l& f& v; @+ y
變量名用小寫字母命名,每個(gè)詞的第一個(gè)字母大寫。類型前綴(u8\s8 etc.)全局變量另加前綴g_。( t! f! D( w5 \% H2 a1 e6 F
局部變量應(yīng)簡(jiǎn)明扼要。局部循環(huán)體控制變量?jī)?yōu)先使用i、j、k等;局部長(zhǎng)度變量?jī)?yōu)先使用len、num等;臨時(shí)中間變量?jī)?yōu)先使用temp、tmp等。6 l  B3 \: `' w4 B
2.4 函數(shù)命名
) g, d& Z% e" U; z: |
函數(shù)名用小寫字母命名,每個(gè)詞的第一個(gè)字母大寫,并將模塊標(biāo)識(shí)加在最前面。
( g$ C3 T; H; U0 _- Q1 ?
2.5 文件命名
' L* j- m) f' Y4 @% n3 s
一個(gè)文件包含一類功能或一個(gè)模塊的所有函數(shù),文件名稱應(yīng)清楚表明其功能或性質(zhì)。
; [- B" v. `8 J4 b0 x9 ]7 @
每個(gè).c文件應(yīng)該有一個(gè)同名的.h文件作為頭文件。 ) x, J5 ^+ J3 ?+ O
3.注釋 3.1 注釋基本原則 2 [7 E' J6 b3 z  f. k4 H' t0 z3 g( v
有助于對(duì)程序的閱讀理解,說(shuō)明程序在"做什么",解釋代碼的目的、功能和采用的方法。9 Y+ ^$ i! J* ~$ F0 i" Y
一般情況源程序有效注釋量在30%左右。
* D# D, Y( r3 O* Q! g7 U/ t: d
注釋語(yǔ)言必須準(zhǔn)確、易懂、簡(jiǎn)潔。
- {: ?" {% L; w0 ^0 u
邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,不再有用的注釋要?jiǎng)h除。
# q+ `4 }+ w# K: |
匯編和C中都用"//",取消";"  不使用段注釋" /*  */ "(調(diào)試時(shí)可用)
0 Q; B3 ]' J4 J
3.2 文件注釋 $ k) I/ ]# g( C3 K8 r) p
文件注釋必須說(shuō)明文件名、函數(shù)功能、創(chuàng)建人、創(chuàng)建日期、版本信息等相關(guān)信息。
% _* X. D- V1 j9 h+ q! B
修改文件代碼時(shí),應(yīng)在文件注釋中記錄修改日期、修改人員,并簡(jiǎn)要說(shuō)明此次修改的目的。所有修改記錄必須保持完整。2 u9 i" C* }# v. R3 @6 M9 W2 j" T
文件注釋放在文件頂端,用"/*……*/"格式包含。& D$ b; e& W# n* b" R- n
注釋文本每行縮進(jìn)4個(gè)空格;每個(gè)注釋文本分項(xiàng)名稱應(yīng)對(duì)齊。
" z7 i8 y. j' _3 c( U* E* A6 v
/***********************************************************  `  X2 I2 |: f6 K4 E
文件名稱:3 m+ j/ h$ ^) c9 |. g' z4 E" w
者:
; M2 ]7 Y, x, C5 w" N
本:
- i6 X5 v: S: @; E
說(shuō) 明:+ j8 ?5 W2 x( x7 H. k
修改記錄:
1 ?# f# z) ~; z0 R
***********************************************************/& H) t9 y5 O) C2 @7 ?1 s
3.3 函數(shù)注釋
$ E3 l/ Y% Y2 z$ f: S: M
3.3.1 函數(shù)頭部注釋% F% V2 v- P  l1 ^' V% i1 }: n
函數(shù)頭部注釋應(yīng)包括函數(shù)名稱、函數(shù)功能、入口參數(shù)、出口參數(shù)等內(nèi)容。如有必要還可增加作者、創(chuàng)建日期、修改記錄(備注)等相關(guān)項(xiàng)目。
( F" s* c, I0 P, B  t# s8 `
函數(shù)頭部注釋放在每個(gè)函數(shù)的頂端,用"/*……*/"的格式包含。其中函數(shù)名稱應(yīng)簡(jiǎn)寫為Name(),不加入、出口參數(shù)等信息。8 Y: Z: c5 X. k; K3 H: c1 C' \
/***********************************************************
. V/ ?$ ?$ Z' ^7 J2 b
函數(shù)名稱:; W' K% M4 E" ~" @
函數(shù)功能:, |0 @" t9 }/ I- a4 L" X" k9 {
入口參數(shù):
! N9 G3 ?/ c3 N; e8 X! c
出口參數(shù):
1 u: Z, h; o) l' r4 ~: C. A0 D: w3 [0 P
注:% v9 R- q3 E* @/ F; w! @/ |; k8 W3 L' O
***********************************************************/( q& R3 J7 R' Z! \9 m* m
3.3.2 代碼注釋信、盈、達(dá)‘騰訊:以一齊捂捂吧久零久要’
$ ]: c9 f) S' w0 r; V: Z: X& ?
代碼注釋應(yīng)與被注釋的代碼緊鄰,放在其上方或右方,不可放在下面。如放于上方則需與其上面的代碼用空行隔開(kāi)。一般少量注釋應(yīng)該添加在被注釋語(yǔ)句的行2尾,一個(gè)函數(shù)內(nèi)的多個(gè)注釋左對(duì)齊;較多注釋則應(yīng)加在上方且注釋行與被注釋的語(yǔ)句左對(duì)齊。
6 m8 ?/ O- F$ N/ P
函數(shù)代碼注釋用"//…//"的格式。, R3 ?; p9 k0 z. \* [$ E* U
通常,分支語(yǔ)句(條件分支、循環(huán)語(yǔ)句等)必須編寫注釋。其程序塊結(jié)束行"}"的右方應(yīng)加表明該程序塊結(jié)束的標(biāo)記"end of ……", 尤其在多重嵌套時(shí)。
8 {, T2 C& C9 _" d+ E
3.4 變量、常量、宏的注釋 % w7 ]% H8 g6 Y' r. `
同一類型的標(biāo)識(shí)符應(yīng)集中定義,并在定義之前一行對(duì)其共性加以統(tǒng)一注釋。對(duì)單個(gè)標(biāo)識(shí)符的注釋加在定義語(yǔ)句的行尾。
$ e! E0 }0 M1 p1 p# f6 h5 C* E
全局變量一定要有詳細(xì)的注釋,包括其功能、取值范圍、哪些函數(shù)或過(guò)程存取它以及存取時(shí)的注意事項(xiàng)等。9 U4 `; ^& v- i  Z" c
注釋用"//…//"的格式。 ' h1 f0 U* G( y. g0 i

8 |/ t, t% b+ Z/ o# Y
回復(fù)

使用道具 舉報(bào)

2#
發(fā)表于 2017-8-6 14:24:58 | 只看該作者
不僅單片機(jī),其余機(jī)械相關(guān)控制程序開(kāi)發(fā)也應(yīng)該這樣編程!
3#
發(fā)表于 2017-8-6 15:43:31 | 只看該作者
謝謝,先收藏起來(lái)
4#
發(fā)表于 2017-8-6 19:40:13 | 只看該作者
單片機(jī)的基礎(chǔ)知識(shí),值得收藏一波~
5#
發(fā)表于 2017-8-8 11:04:22 | 只看該作者
學(xué)習(xí)了
回復(fù)

使用道具 舉報(bào)

6#
 樓主| 發(fā)表于 2017-8-9 18:14:16 | 只看該作者
共同學(xué)習(xí)進(jìn)步

本版積分規(guī)則

小黑屋|手機(jī)版|Archiver|機(jī)械社區(qū) ( 京ICP備10217105號(hào)-1,京ICP證050210號(hào),浙公網(wǎng)安備33038202004372號(hào) )

GMT+8, 2024-11-18 05:56 , Processed in 0.053370 second(s), 14 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表