硬件開(kāi)發(fā)人員C語(yǔ)言編程規(guī)范_第1頁(yè)
硬件開(kāi)發(fā)人員C語(yǔ)言編程規(guī)范_第2頁(yè)
硬件開(kāi)發(fā)人員C語(yǔ)言編程規(guī)范_第3頁(yè)
硬件開(kāi)發(fā)人員C語(yǔ)言編程規(guī)范_第4頁(yè)
硬件開(kāi)發(fā)人員C語(yǔ)言編程規(guī)范_第5頁(yè)
已閱讀5頁(yè),還剩8頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1排版風(fēng)格1-1:程序塊要采用縮進(jìn)風(fēng)格編寫(xiě),縮進(jìn)的空格數(shù)為4個(gè)。1-2:相對(duì)獨(dú)立的程序塊之間或for、if> do、while> switch等語(yǔ)句前后應(yīng)加一空行。示例:如下例子不符合規(guī)范。例一:if (!valid_ni(ni)./ program coderepssn_ind = ssn_dataindexrepssn_index;repssn_ni = ssn_dataindex.ni;例二:char *pcontext;int nlndex;long icounter;pcontext = new (cstring); if (pcontext = null)return

2、false;應(yīng)如下書(shū)寫(xiě)例一:if (!valid_ni(ni) / program coderepssn_ind = ssn_dataindex.repssn_index; repssn_ni = ssn_dataindex.ni;例二:char *pcontext;int nlndex;long icounter;pcontext = new (cstring);if (pcontext = null)return false;1- 3:不允許把多個(gè)短語(yǔ)句寫(xiě)在一行中,即一行只寫(xiě)一條語(yǔ)句。示例:如下例子不符合規(guī)范。rect.length = 0; rect.width = 0;應(yīng)如下書(shū)寫(xiě)rec

3、t.length = 0;rect.width = 0;1- 4: ifx for> do、while> case、switch、default等語(yǔ)句自占一行,且if、for、do、wh訂e等語(yǔ)句的執(zhí)行語(yǔ)句部分無(wú)論多少都要加括號(hào)。示例:如下例子不符合規(guī)范。if (pusercr = null) return;應(yīng)如下書(shū)寫(xiě):if (pusercr = null)return;1- 5:對(duì)齊只使用空格鍵,不使用tab鍵。說(shuō)明:以免用不同的編輯器閱讀程序時(shí),因tab鍵所設(shè)置的空格數(shù)目不同而造成程序布局 不整齊。1- 6:函數(shù)或過(guò)程的開(kāi)始、結(jié)構(gòu)的定義及循環(huán)、判斷等語(yǔ)句中的代碼都要釆用縮進(jìn)風(fēng)格

4、,case 語(yǔ)句下的情況處理語(yǔ)句也要遵從語(yǔ)句縮進(jìn)要求。1- 7:程序塊的分界符(如c/c+語(yǔ)言的大括號(hào)''和'')應(yīng)各獨(dú)占一行并且位于同一列, 同時(shí)與引用它們的語(yǔ)句左對(duì)齊。在函數(shù)體的開(kāi)始、類(lèi)的定義、結(jié)構(gòu)的定義、枚舉的定義 以及if、for、do、while> switch> case語(yǔ)句中的程序都要采用如上的縮進(jìn)方式。示例:如下例子不符合規(guī)范。for (. . .)./ program codeif (.) / program codevoid example_fun( void )./ program code應(yīng)如下書(shū)寫(xiě)。for (.). / pr

5、ogram codeif (). / program codevoid example_fun( void ). / program code1- 8:在兩個(gè)以上的關(guān)鍵字、變量、常量進(jìn)行對(duì)等操作時(shí),它們之間的操作符之前、之后或者 前后要加空格;進(jìn)行非對(duì)等操作時(shí),如果是關(guān)系密切的立即操作符(如一>),后不應(yīng)加 空格。說(shuō)明:采用這種松散方式編寫(xiě)代碼的目的是使代碼更加清晰。由于留空格所產(chǎn)生的清晰性是相對(duì)的,所以,在已經(jīng)非常清晰的語(yǔ)句中沒(méi)有必要再留空格, 如果語(yǔ)句已足夠清晰則括號(hào)內(nèi)側(cè)(即左括號(hào)后面和右括號(hào)前面)不需要加空格,多重括號(hào)間 不必加空格,因?yàn)樵赾/c+ +語(yǔ)言中括號(hào)己經(jīng)是最清晰的標(biāo)志了

6、。在長(zhǎng)語(yǔ)句中,如果需要加的空格非常多,那么應(yīng)該保持整體清晰,而在局部不加空格。給 操作符留空格時(shí)不要連續(xù)留兩個(gè)以上空格。示例:(1) 逗號(hào)、分號(hào)只在后面加空格。int a, b, c;(2) 比較操作符,賦值操作符” =”、”+= “,算術(shù)操作符”+ ”、“”,邏輯操作符”&&”、”&”,位域操作符”<<”、等雙目操作符的前后加空格。if (curren>= max_time_value)a = b + c;a *= 2;a = b a 2;(3)n”+”、”一”、”&”(地址運(yùn)算符)等單目操作符前后不加空格。*p = 1 a 1;/內(nèi)容操作r

7、”與內(nèi)容之間flag = jisempty; /非操作與內(nèi)容之間p = &mem;/地址操作”&”與內(nèi)容之間i+ + ;/ fl+ n 11與內(nèi)容z間(4)仁” "前后不加空格。p->id = pid; /指針前后不加空格(5) if for while、switch等與后面的括號(hào)間應(yīng)加空格,使if等關(guān)鍵字更為突出. 明顯cif (a >= b && c > d) 1-8:對(duì)結(jié)構(gòu)成員賦值或有連續(xù)多條賦值語(yǔ)句時(shí),等號(hào)對(duì)齊。1-9: #define的各個(gè)字段對(duì)齊。以下示例不符合規(guī)范#define max_task_number 100#d

8、efine left_x 10#define bottom_y 400應(yīng)書(shū)寫(xiě)成:#definemax_task_number100#defineleft_x10#definebottom_y4002標(biāo)識(shí)符命名2- 1:標(biāo)識(shí)符的命名要清晰、明了,有明確含義,同時(shí)使用完整的單詞或大家基本可以理解的 縮寫(xiě),避免使人產(chǎn)生誤解。標(biāo)識(shí)符應(yīng)采用英文單詞或組合,切忌采用拼音來(lái)命名。說(shuō)明:較短的單詞可通過(guò)去掉“元音”形成縮寫(xiě);較長(zhǎng)的單詞可取單詞的頭兒個(gè)字母形成 縮寫(xiě);一些單詞有大家公認(rèn)的縮寫(xiě)。示例:temp可縮寫(xiě)為 tmp ;flag可縮寫(xiě)為fig ;2- 2:對(duì)于變量命名,禁止取單個(gè)字符(如i、j、k.),建

9、議除了要有具體含義外,還能表 明其變量類(lèi)型、數(shù)據(jù)類(lèi)型等,但i、j、k作局部循環(huán)變量是允許的。說(shuō)明:變量,尤其是局部變量,如果用單個(gè)字符表示,很容易敲錯(cuò)(如i寫(xiě)成j),而編 譯時(shí)又檢查不出來(lái),有可能為了這個(gè)小小的錯(cuò)誤而花費(fèi)大量的查錯(cuò)時(shí)間。示例:下面所示變量名的定義方法可以借鑒。int li_demowidth;long gl_demowidth;demo_stru stru_demo;其變量名解釋如下:1局部變量g 全局變量stru 結(jié)構(gòu)i數(shù)據(jù)類(lèi)型(interger)2- 3:定義類(lèi)型和宏定義常數(shù)以大寫(xiě)字母命名,各單詞之間用下劃線隔開(kāi)。2- 4:對(duì)于指針的定義必須以小寫(xiě)的“p”開(kāi)頭,符號(hào)必須緊靠

10、與變量名。2- 5:命名規(guī)范必須在同一項(xiàng)目中統(tǒng)一,比如采用全小寫(xiě)加下劃線的風(fēng)格或大小寫(xiě)混排的方式, 不要使用大小寫(xiě)與下劃線混排的方式,用作特殊標(biāo)識(shí)如標(biāo)識(shí)成員變量或全局變量的m_和 g_,其后加上大小寫(xiě)混排的方式是允許的。示例: add_user 不允許,add_user> adduser> m_adduser 允許。2- 6:自己特有的命名風(fēng)格,要自始至終保持一致,不可來(lái)回變化。說(shuō)明:個(gè)人的命名風(fēng)格,在符合所在項(xiàng)冃組或產(chǎn)品組的命名規(guī)則的前提下,才可使用。(即命名規(guī)則中沒(méi)冇規(guī)定到的地方才可冇個(gè)人命名風(fēng)格)。3可靠性、可維護(hù)性3-1:具有文件作用域的對(duì)象盡量聲名為static。3- 2

11、:顯示地給出函數(shù)的返回值類(lèi)型,無(wú)返回值函數(shù)定義為voido說(shuō)明:c、c+語(yǔ)言的編譯系統(tǒng)默認(rèn)無(wú)顯示返回值函數(shù)的返回值類(lèi)型為int。3- 3:聲明函數(shù)原型時(shí)給出參數(shù)名稱(chēng)和類(lèi)型,并且與實(shí)現(xiàn)此函數(shù)時(shí)的參數(shù)名稱(chēng)、類(lèi)型保持一致,無(wú)參數(shù)的函數(shù),用void聲明。示例:下面聲明不正確。int checkdata ();int setpoint( int, int );應(yīng)改為如下聲明:int checkdata ( void );int setpoint( int xz int y );3-4:任何if. .else if語(yǔ)句,最后必須有一個(gè)收尾的else。說(shuō)明:對(duì)不期望的情況(包括異常情況)進(jìn)行處理,保證程序邏

12、輯嚴(yán)謹(jǐn)。3-5:不管有沒(méi)有無(wú)效分支,switch函數(shù)一定要defaut這個(gè)分支。說(shuō)明:對(duì)不期望的情況(包括異常情況)進(jìn)行處理,保證程序邏輯嚴(yán)謹(jǐn)。3-6:每個(gè)case語(yǔ)句的結(jié)尾不要忘了加break,否則將導(dǎo)致多個(gè)分支重疊。3- 7:注意運(yùn)算符的優(yōu)先級(jí),并用括號(hào)明確表達(dá)式的操作順序,避免使用默認(rèn)優(yōu)先級(jí)。不允許使用復(fù)雜的操作符組合。3- 8:使用宏定義表達(dá)式時(shí),要使用完備的括號(hào)。示例:如下的宏定義表達(dá)式都存在一定的隱患。#define rec_area(a, b) a * b#define rec_area(m, b) (a * b)正確的定義為:#define rec_area(“ b) (a)

13、* (b)3- 9:在邏輯表達(dá)式中使用明確的邏輯判斷。示例:如下邏輯表達(dá)式不規(guī)范。(1) if ( strlen(strname)(2) for ( index = max_ssn_numeer; index ; index )(3) while ( p && *p ) /假設(shè)p為寧符指針應(yīng)改為如下:(1) if ( strlen(strname) != 0 )(2) for ( index = max_ssn_number; index != 0 ; index -)(3) while ( (p != null) &&(*p != *0 * )3- 10:語(yǔ)句嵌套層次不得超過(guò)5層。說(shuō)明:嵌套層次太多,增加了代碼的復(fù)雜度及測(cè)試的難度,容易出錯(cuò),增加代碼維護(hù) 的難度。3-11:用sizeof來(lái)確定結(jié)構(gòu)、聯(lián)合或變量占用的空間。說(shuō)明:這樣可提高程序的可讀性、可維護(hù)性,同時(shí)也增加了程序的可移植性4效率4- 1:使用自加、自減指令說(shuō)明:通常使用自加、自減指令和復(fù)合賦值表達(dá)式(如=1及等)都能夠生成 高質(zhì)量的程序代碼,編譯器通常都能夠生成inc和dec之

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論