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

下載本文檔

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

文檔簡介

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

2、寫例一:if (!valid_ni(ni. / program coderepssn_ind = ssn_dataindex.repssn_index;repssn_ni = ssn_dataindex.ni;例二:char *pContext;int nIndex;long lCounter;pContext = new (CString;if(pContext = NULLreturn FALSE;1-3:不允許把多個短語句寫在一行中,即一行只寫一條語句。示例:如下例子不符合規(guī)范。rect.length = 0; rect.width = 0;應(yīng)如下書寫rect.length = 0;re

3、ct.width = 0;1-4:if、for、do、while、case、switch、default等語句自占一行,且if、for、do、while等語句的執(zhí)行語句部分無論多少都要加括號。示例:如下例子不符合規(guī)范。if (pUserCR = NULL return;應(yīng)如下書寫:if (pUserCR = NULLreturn;1-5:對齊只使用空格鍵,不使用TAB鍵。說明:以免用不同的編輯器閱讀程序時,因TAB鍵所設(shè)置的空格數(shù)目不同而造成程序布局不整齊。1-6:函數(shù)或過程的開始、結(jié)構(gòu)的定義及循環(huán)、判斷等語句中的代碼都要采用縮進(jìn)風(fēng)格,case 語句下的情況處理語句也要遵從語句縮進(jìn)要求。1-7

4、:程序塊的分界符(如C/C+語言的大括號和應(yīng)各獨(dú)占一行并且位于同一列,同時與引用它們的語句左對齊。在函數(shù)體的開始、類的定義、結(jié)構(gòu)的定義、枚舉的定義以及if、for、do、while、switch、case語句中的程序都要采用如上的縮進(jìn)方式。示例:如下例子不符合規(guī)范。for (. . / program codeif (. / program codevoid example_fun( void . / program code應(yīng)如下書寫。for (. / program codeif (. / program codevoid example_fun( void . / program cod

5、e1-8:在兩個以上的關(guān)鍵字、變量、常量進(jìn)行對等操作時,它們之間的操作符之前、之后或者前后要加空格;進(jìn)行非對等操作時,如果是關(guān)系密切的立即操作符(如->,后不應(yīng)加空格。說明:采用這種松散方式編寫代碼的目的是使代碼更加清晰。由于留空格所產(chǎn)生的清晰性是相對的,所以,在已經(jīng)非常清晰的語句中沒有必要再留空格,如果語句已足夠清晰則括號內(nèi)側(cè)(即左括號后面和右括號前面不需要加空格,多重括號間不必加空格,因?yàn)樵贑/C+語言中括號已經(jīng)是最清晰的標(biāo)志了。在長語句中,如果需要加的空格非常多,那么應(yīng)該保持整體清晰,而在局部不加空格。給操作符留空格時不要連續(xù)留兩個以上空格。示例:(1 逗號、分號只在后面加空格。i

6、nt a, b, c;(2比較操作符, 賦值操作符"="、 "+=",算術(shù)操作符"+"、"%",邏輯操作符"&&"、"&",位域操作符"<<"、""等雙目操作符的前后加空格。if (current_time >= MAX_TIME_VALUEa =b + c;a *= 2;a =b 2;(3"!"、""、"+"、"-"

7、;、"&"(地址運(yùn)算符等單目操作符前后不加空格。*p = 'a' / 內(nèi)容操作"*"與內(nèi)容之間flag = !isEmpty; / 非操作"!"與內(nèi)容之間p = &mem; / 地址操作"&" 與內(nèi)容之間i+; / "+","-"與內(nèi)容之間(4"->"、"."前后不加空格。p->id = pid; / "->"指針前后不加空格(5 if、for、while、s

8、witch等與后面的括號間應(yīng)加空格,使if等關(guān)鍵字更為突出、明顯。if (a >= b && c > d1-8:對結(jié)構(gòu)成員賦值或有連續(xù)多條賦值語句時,等號對齊。1-9:#define的各個字段對齊。以下示例不符合規(guī)范#define MAX_TASK_NUMBER 100#define LEFT_X 10#define BOTTOM_Y 400應(yīng)書寫成:#define MAX_TASK_NUMBER 100#define LEFT_X 10#define BOTTOM_Y 4002 標(biāo)識符命名2-1:標(biāo)識符的命名要清晰、明了,有明確含義,同時使用完整的單詞或大家基本可

9、以理解的縮寫,避免使人產(chǎn)生誤解。標(biāo)識符應(yīng)采用英文單詞或組合,切忌采用拼音來命名。說明:較短的單詞可通過去掉“元音”形成縮寫;較長的單詞可取單詞的頭幾個字母形成縮寫;一些單詞有大家公認(rèn)的縮寫。示例:temp 可縮寫為 tmp ;flag 可縮寫為 flg ;2-2:對于變量命名,禁止取單個字符(如i、j、k.,建議除了要有具體含義外,還能表明其變量類型、數(shù)據(jù)類型等,但i、j、k作局部循環(huán)變量是允許的。說明:變量,尤其是局部變量,如果用單個字符表示,很容易敲錯(如i寫成j,而編譯時又檢查不出來,有可能為了這個小小的錯誤而花費(fèi)大量的查錯時間。示例:下面所示變量名的定義方法可以借鑒。int li_De

10、moWidth;long gl_DemoWidth;DEMO_STRU stru_Demo;其變量名解釋如下:l 局部變量 g 全局變量stru 結(jié)構(gòu)i 數(shù)據(jù)類型(Interger2-3:定義類型和宏定義常數(shù)以大寫字母命名,各單詞之間用下劃線隔開。2-4:對于指針的定義必須以小寫的“p”開頭,符號*必須緊靠與變量名。2-5:命名規(guī)范必須在同一項(xiàng)目中統(tǒng)一,比如采用全小寫加下劃線的風(fēng)格或大小寫混排的方式,不要使用大小寫與下劃線混排的方式,用作特殊標(biāo)識如標(biāo)識成員變量或全局變量的m_和g_,其后加上大小寫混排的方式是允許的。示例: Add_User不允許,add_user、AddUser、m_AddU

11、ser允許。2-6:自己特有的命名風(fēng)格,要自始至終保持一致,不可來回變化。說明:個人的命名風(fēng)格,在符合所在項(xiàng)目組或產(chǎn)品組的命名規(guī)則的前提下,才可使用。(即命名規(guī)則中沒有規(guī)定到的地方才可有個人命名風(fēng)格。3 可靠性、可維護(hù)性3-1:具有文件作用域的對象盡量聲名為static。3-2:顯示地給出函數(shù)的返回值類型,無返回值函數(shù)定義為void。說明:C、C+語言的編譯系統(tǒng)默認(rèn)無顯示返回值函數(shù)的返回值類型為int。3-3:聲明函數(shù)原型時給出參數(shù)名稱和類型,并且與實(shí)現(xiàn)此函數(shù)時的參數(shù)名稱、類型保持一致,無參數(shù)的函數(shù),用void聲明。示例:下面聲明不正確。int CheckData( ;int SetPoint

12、( int, int ;應(yīng)改為如下聲明:int CheckData( void ;int SetPoint( int x, int y ;3-4:任何if.else if 語句,最后必須有一個收尾的else。說明:對不期望的情況(包括異常情況進(jìn)行處理,保證程序邏輯嚴(yán)謹(jǐn)。3-5:不管有沒有無效分支,switch函數(shù)一定要defaut這個分支。說明:對不期望的情況(包括異常情況進(jìn)行處理,保證程序邏輯嚴(yán)謹(jǐn)。3-6:每個case 語句的結(jié)尾不要忘了加break,否則將導(dǎo)致多個分支重疊。3-7:注意運(yùn)算符的優(yōu)先級,并用括號明確表達(dá)式的操作順序,避免使用默認(rèn)優(yōu)先級。不允許使用復(fù)雜的操作符組合。3-8:使用

13、宏定義表達(dá)式時,要使用完備的括號。示例:如下的宏定義表達(dá)式都存在一定的隱患。#define REC_AREA(a, b a * b#define REC_AREA(a, b (a * b#define REC_AREA(a, b (a * (b正確的定義為:#define REC_AREA(a, b (a * (b3-9:在邏輯表達(dá)式中使用明確的邏輯判斷。示例:如下邏輯表達(dá)式不規(guī)范。(1 if ( strlen(strName (2 for ( index = MAX_SSN_NUMBER; index ; index - (3 while ( p && *p / 假設(shè)p為字符

14、指針應(yīng)改為如下:(1 if ( strlen(strName != 0 (2 for ( index = MAX_SSN_NUMBER; index != 0 ; index - (3 while (p != NULL && (*p != '0' 3-10:語句嵌套層次不得超過5層。說明:嵌套層次太多,增加了代碼的復(fù)雜度及測試的難度,容易出錯,增加代碼維護(hù)的難度。3-11:用sizeof來確定結(jié)構(gòu)、聯(lián)合或變量占用的空間。說明:這樣可提高程序的可讀性、可維護(hù)性,同時也增加了程序的可移植性4 效率4-1:使用自加、自減指令說明:通常使用自加、自減指令和復(fù)合賦值表達(dá)式(如a-=1及a+=1等都能夠生成高質(zhì)量的程序代碼,編譯器通常都能夠生成

溫馨提示

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

評論

0/150

提交評論