




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1、排版 2、注釋 3、標(biāo)識(shí)符命名 4、可讀性 5、變量、結(jié)構(gòu) 6、函數(shù)、過程 11-1 :程序塊要采用縮進(jìn)風(fēng)格編寫,縮進(jìn)的空格數(shù)為4 個(gè) 21-2 :相對(duì)獨(dú)立的程序塊之間、變量說明之后必須加空行 示例:如下例子不符合規(guī)范。 if (!valid_ni(ni) . / program coderepssn_ind = ssn_dataindex.repssn_index;repssn_ni = ssn_dataindex.ni; 應(yīng)如下書寫 if (!valid_ni(ni) . / program coderepssn_ind = ssn_dataindex.repssn_index;rep
2、ssn_ni = ssn_dataindex.ni;31-3 :較長的語句(80 字符)要分成多行書寫,長表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首,劃分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語句可讀 示例: perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN + STAT_SIZE_PER_FRAM * sizeof( _UL );act_task_tableframe_id * STAT_TASK_CHECK_NUMBER + index.occupied = stat_poiindex.occupied;act_task_
3、tabletaskno.duration_true_or_false = SYS_get_sccp_statistic_state( stat_item );report_or_not_flag = (taskno MAX_ACT_TASK_NUMBER) & (n7stat_stat_item_valid (stat_item) & (act_task_tabletaskno.result_data != 0);41-4 :循環(huán)、判斷等語句中若有較長的表達(dá)式或語句,則要進(jìn)行適應(yīng)的劃分,長表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首 示例: if (taskno ma
4、x_act_task_number) & (n7stat_stat_item_valid (stat_item) . / program codefor (i = 0, j = 0; (i BufferKeywordword_index.word_length) & (j NewKeyword.word_length); i+, j+) . / program codefor (i = 0, j = 0; (i first_word_length) & (j ),后不應(yīng)加空格。 說明:采用這種松散方式編寫代碼的目的是使代碼更加清晰 由于留空格所產(chǎn)生的清晰性是相對(duì)的,所以
5、,在已經(jīng)非常清晰的語句中沒有必要再留空格,如果語句已足夠清晰則括號(hào)內(nèi)側(cè)(即左括號(hào)后面和右括號(hào)前面)不需要加空格,多重括號(hào)間不必加空格,因?yàn)樵贑/C+語言中括號(hào)已經(jīng)是最清晰的標(biāo)志了。在長語句中,如果需要加的空格非常多,那么應(yīng)該保持整體清晰,而在局部不加空格。給操作符留空格時(shí)不要連續(xù)留兩個(gè)以上空格。 示例: (1) 逗號(hào)、分號(hào)只在后面加空格。int a, b, c; (2)比較操作符, 賦值操作符=、 +=,算術(shù)操作符+、%,邏輯操作符&、&,位域操作符= MAX_TIME_VALUE) a = b + c;a *= 2;a = b 2; 13(3)!、+、-、&(地址運(yùn)算
6、符)等單目操作符前后不加空格。*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、switch等與后面的括號(hào)間應(yīng)加空格,使if等關(guān)鍵字更為突出、明顯。if (a = b & c d)1-1:一行程序以小于80字符為宜,不要寫得過長。141、排版 2、注釋 3、標(biāo)識(shí)符命名 4、可讀性 5、變量、結(jié)構(gòu) 6、函數(shù)、過程 152-1 :一般情況下,源程序有效
7、注釋量必須在20 以上 說明:注釋的原則是有助于對(duì)程序的閱讀理解,在該加的地方都加了,注釋不宜太多也不能太少,注釋語言必須準(zhǔn)確、易懂、簡潔。 162-2 :說明性文件(如頭文件.h 文件、.inc 文件、.def 文件、編譯說明文件.cfg 等)頭部應(yīng)進(jìn)行注釋,注釋必須列出:版權(quán)說明、版本號(hào)、生成日期、作者、內(nèi)容、功能、與其它文件的關(guān)系、修改日志等,頭文件的注釋中還應(yīng)有函數(shù)功能簡要說明 示例:下面這段頭文件的頭注釋比較標(biāo)準(zhǔn),當(dāng)然,并不局限于此格式,但上述信息建議要包含在內(nèi)。 /* Copyright (C), 2008-2009, *. Co., Ltd. File name: / 文件名 A
8、uthor: Version: Date: / 作者、版本及完成日期 Description: / 用于詳細(xì)說明此程序文件完成的主要功能,與其他模塊 / 或函數(shù)的接口,輸出值、取值范圍、含義及參數(shù)間的控 / 制、順序、獨(dú)立或依賴等關(guān)系 Others: / 其它內(nèi)容的說明 Function List: / 主要函數(shù)列表,每條記錄應(yīng)包括函數(shù)名及功能簡要說明 1. . History: / 修改歷史記錄列表,每條修改記錄應(yīng)包括修改日期、修改 / 者及修改內(nèi)容簡述 1. Date: Author: Modification: 2. .*/。 172-3:源文件頭部應(yīng)進(jìn)行注釋,列出:版權(quán)說明、版本號(hào)、生
9、成日期、作者、模塊目的/功能、主要函數(shù)及其功能、修改日志等。示例:下面這段源文件的頭注釋比較標(biāo)準(zhǔn),當(dāng)然,并不局限于此格式,但上述信息建議要包含在內(nèi)。 /* Copyright (C), 1988-1999, Huawei Tech. Co., Ltd. FileName: test.cpp Author: Version : Date: Description: / 模塊描述 Version: / 版本信息 Function List: / 主要函數(shù)及其功能 1. - History: / 歷史修改記錄 David 96/10/12 1.0 build this moudle */說明:Des
10、cription一項(xiàng)描述本文件的內(nèi)容、功能、內(nèi)部各部分之間的關(guān)系及本文件與其它文件關(guān)系等。History是修改歷史記錄列表,每條修改記錄應(yīng)包括修改日期、修改者及修改內(nèi)容簡述。182-4 :函數(shù)(方法)頭部應(yīng)進(jìn)行注釋,列出:函數(shù)的目的/ 功能、輸入?yún)?shù)、輸出參數(shù)、返回值、調(diào)用關(guān)系(函數(shù)、表)等 示例:下面這段函數(shù)的注釋比較標(biāo)準(zhǔn),當(dāng)然,并不局限于此格式,但上述信息建議要包含在內(nèi)。 /* Function: / 函數(shù)名稱 Description: / 函數(shù)功能、性能等的描述 Called By: : / 被本函數(shù)調(diào)用的函數(shù)清單 Calls /本函數(shù)調(diào)用的函數(shù)清單 Table Accessed: /
11、被訪問的表(此項(xiàng)僅對(duì)于牽扯到數(shù)據(jù)庫操作的程序) Table Updated: / 被修改的表(此項(xiàng)僅對(duì)于牽扯到數(shù)據(jù)庫操作的程序) Input: / 輸入?yún)?shù)說明,包括每個(gè)參數(shù)的作 / 用、取值說明及參數(shù)間關(guān)系。 Output: / 對(duì)輸出參數(shù)的說明。 Return: / 函數(shù)返回值的說明 Others: / 其它說明*/192-5 :邊寫代碼邊注釋,修改代碼同時(shí)修改相應(yīng)的注釋,以保證注釋與代碼的一致性。不再有用的注釋要?jiǎng)h除202-6 :避免在注釋中使用縮寫,特別是非常用縮寫 說明:在使用縮寫時(shí)或之前,應(yīng)對(duì)縮寫進(jìn)行必要的說明。 212-7 :注釋應(yīng)與其描述的代碼相近,對(duì)代碼的注釋應(yīng)放在其上方或右
12、方(對(duì)單條語句的注釋)相鄰位置,不可放在下面,如放于上方則需與其上面的代碼用空行隔開 示例:如下例子不符合規(guī)范。 repssn_ind = ssn_dataindex.repssn_index;repssn_ni = ssn_dataindex.ni;/* get replicate sub system index and net indicator */ 應(yīng)如下書寫 /* get replicate sub system index and net indicator */repssn_ind = ssn_dataindex.repssn_index;repssn_ni = ssn_dat
13、aindex.ni;222-8 :對(duì)于所有有物理含義的變量、常量,如果其命名不是充分自注釋的,在聲明時(shí)都必須加以注釋,說明其物理含義。變量、常量、宏的注釋應(yīng)放在其上方相鄰位置或右方 示例: /* active statistic task number */#define MAX_ACT_TASK_NUMBER 1000#define MAX_ACT_TASK_NUMBER 1000 /* active statistic task number */232-9 :數(shù)據(jù)結(jié)構(gòu)聲明( 包括數(shù)組、結(jié)構(gòu)、類、枚舉等) ,如果其命名不是充分自注釋的,必須加以注釋。對(duì)數(shù)據(jù)結(jié)構(gòu)的注釋應(yīng)放在其上方相鄰位置,不
14、可放在下面;對(duì)結(jié)構(gòu)中的每個(gè)域的注釋放在此域的右方 示例:可按如下形式說明枚舉/數(shù)據(jù)/聯(lián)合結(jié)構(gòu)。/* sccp interface with sccp user primitive message name */enum SCCP_USER_PRIMITIVE N_UNITDATA_IND, /* sccp notify sccp user unit data come */ N_NOTICE_IND, /* sccp notify user the No.7 network can not */ /* transmission this message */ N_UNITDATA_REQ, /
15、* sccp users unit data transmission request*/;242-10 :全局變量要有較詳細(xì)的注釋,包括對(duì)其功能、取值范圍、哪些函數(shù)或過程存取它以及存取時(shí)注意事項(xiàng)等的說明 示例: /* The ErrorCode when SCCP translate */* Global Title failure, as follows */ / 變量作用、含義/* 0 SUCCESS 1 GT Table error */* 2 GT error Others no use */ / 變量取值范圍/* only function SCCPTranslate() in *
16、/* this modual can modify it, and other */* module can visit it through call */* the function GetGTTransErrorCode() */ / 使用方法BYTE g_GTTranErrorCode; 252-11 :注釋與所描述內(nèi)容進(jìn)行同樣的縮排 說明:可使程序排版整齊,并方便注釋的閱讀與理解。 示例:如下例子,排版不整齊,閱讀稍感不方便。 void example_fun( void )/* code one comments */ CodeBlock One /* code two comme
17、nts */ CodeBlock Two應(yīng)改為如下布局。 void example_fun( void ) /* code one comments */ CodeBlock One /* code two comments */ CodeBlock Two262-12 :在程序塊的結(jié)束行右方加注釋標(biāo)記,以表明某程序塊的結(jié)束 說明:當(dāng)代碼段較長,特別是多重嵌套時(shí),這樣做可以使代碼更清晰,更便于閱讀。 示例:參見如下例子。 if (.) / program code while (index MAX_INDEX) / program code /* end of while (index MAX
18、_INDEX) */ / 指明該條while語句結(jié)束271、排版 2、注釋 3、標(biāo)識(shí)符命名 4、可讀性 5、變量、結(jié)構(gòu) 6、函數(shù)、過程 283-1 :標(biāo)識(shí)符的命名要清晰、明了,有明確含義,同時(shí)使用完整的單詞或大家基本可以理解的縮寫,避免使人產(chǎn)生誤解 說明:較短的單詞可通過去掉“元音”形成縮寫;較長的單詞可取單詞的頭幾個(gè)字母形成縮寫;一些單詞有大家公認(rèn)的縮寫。示例:如下單詞的縮寫能夠被大家基本認(rèn)可。 temp 可縮寫為 tmp ;flag 可縮寫為 flg ;statistic 可縮寫為 stat ;increment 可縮寫為 inc ;message 可縮寫為 msg ;293-2 :對(duì)于變
19、量命名,禁止取單個(gè)字符(如i 、j 、k. ),建議除了要有具體含義外,還能表明其變量類型、數(shù)據(jù)類型等,但i 、j 、k 作局部循環(huán)變量是允許的 說明:變量,尤其是局部變量,如果用單個(gè)字符表示,很容易敲錯(cuò)(如i寫成j),而編譯時(shí)又檢查不出來,有可能為了這個(gè)小小的錯(cuò)誤而花費(fèi)大量的查錯(cuò)時(shí)間。示例:下面所示的局部變量名的定義方法可以借鑒。 int liv_Width其變量名解釋如下: l 局部變量(Local) (其它:g 全局變量(Global).) i 數(shù)據(jù)類型(Interger) v 變量(Variable) (其它:c 常量(Const).) Width 變量含義這樣可以防止局部變量與全局變
20、量重名。 301、排版 2、注釋 3、標(biāo)識(shí)符命名 4、可讀性 5、變量、結(jié)構(gòu) 6、函數(shù)、過程 314-1 :注意運(yùn)算符的優(yōu)先級(jí),并用括號(hào)明確表達(dá)式的操作順序,避免使用默認(rèn)優(yōu)先級(jí) 說明:防止閱讀程序時(shí)產(chǎn)生誤解,防止因默認(rèn)的優(yōu)先級(jí)與設(shè)計(jì)思想不符而導(dǎo)致程序出錯(cuò)。 示例:下列語句中的表達(dá)式 word = (high 8) | low (1)if (a | b) & (a & c) (2)if (a | b) (c & d) (3)如果書寫為:high 8 | lowa | b & a & ca | b c & d由于 high 8 | low = ( h
21、igh 8) | low,a | b & a & c = (a | b) & (a & c),(1)(2)不會(huì)出錯(cuò),但語句不易理解;a | b c & d = a | (b c) & d,(3)造成了判斷條件出錯(cuò)324-2 :避免使用不易理解的數(shù)字,用有意義的標(biāo)識(shí)來替代。涉及物理狀態(tài)或者含有物理意義的常量,不應(yīng)直接使用數(shù)字,必須用有意義的枚舉或宏來代替 示例:如下的程序可讀性差。 if (Trunkindex.trunk_state = 0) Trunkindex.trunk_state = 1; . / program code應(yīng)改為如下形式。
22、 #define TRUNK_IDLE 0#define TRUNK_BUSY 1if (Trunkindex.trunk_state = TRUNK_IDLE) Trunkindex.trunk_state = TRUNK_BUSY; . / program code334-3 :源程序中關(guān)系較為緊密的代碼應(yīng)盡可能相鄰 說明:便于程序閱讀和查找。 示例:以下代碼布局不太合理。 rect.length = 10;char_poi = str;rect.width = 5;若按如下形式書寫,可能更清晰一些。 rect.length = 10;rect.width = 5; / 矩形的長與寬關(guān)系較
23、密切,放在一起。char_poi = str;344-4 :不要使用難懂的技巧性很高的語句,除非很有必要時(shí) 說明:高技巧語句不等于高效率的程序,實(shí)際上程序的效率關(guān)鍵在于算法。 示例:如下表達(dá)式,考慮不周就可能出問題,也較難理解。 * stat_poi + += 1;* + stat_poi += 1;應(yīng)分別改為如下:*stat_poi += 1;stat_poi+; / 此二語句功能相當(dāng)于“ * stat_poi + += 1; ”+ stat_poi;*stat_poi += 1; / 此二語句功能相當(dāng)于“ * + stat_poi += 1; ”351、排版 2、注釋 3、標(biāo)識(shí)符命名 4、
24、可讀性 5、變量、結(jié)構(gòu) 6、函數(shù)、過程 7、程序效率 12、宏 365-1 :去掉沒必要的公共變量 說明:公共變量是增大模塊間耦合的原因之一,故應(yīng)減少?zèng)]必要的公共變量以降低模塊間的耦合度。375-2 :明確公共變量與操作此公共變量的函數(shù)或過程的關(guān)系,如訪問、修改及創(chuàng)建等 說明:明確過程操作變量的關(guān)系后,將有利于程序的進(jìn)一步優(yōu)化、單元測試、系統(tǒng)聯(lián)調(diào)以及代碼維護(hù)等。這種關(guān)系的說明可在注釋或文檔中描述。 示例:在源文件中,可按如下注釋形式說明。 RELATION System_Init Input_Rec Print_Rec Stat_ScoreStudent Create Modify Acces
25、s AccessScore Create Modify Access Access, Modify注:RELATION為操作關(guān)系;System_Init、Input_Rec、Print_Rec、Stat_Score為四個(gè)不同的函數(shù);Student、Score為兩個(gè)全局變量;Create表示創(chuàng)建,Modify表示修改,Access表示訪問。其中,函數(shù)Input_Rec、Stat_Score都可修改變量Score,故此變量將引起函數(shù)間較大的耦合,并可能增加代碼測試、維護(hù)的難度。385-3 :構(gòu)造僅有一個(gè)模塊或函數(shù)可以修改、創(chuàng)建,而其余有關(guān)模塊或函數(shù)只訪問的公共變量,防止多個(gè)不同模塊或函數(shù)都可以修改
26、、創(chuàng)建同一公共變量的現(xiàn)象 說明:降低公共變量耦合度。391、排版 2、注釋 3、標(biāo)識(shí)符命名 4、可讀性 5、變量、結(jié)構(gòu) 6、函數(shù)、過程 406-4 :編寫可重入函數(shù)時(shí),若使用全局變量,則應(yīng)通過關(guān)中斷、信號(hào)量(即P 、V 操作)等手段對(duì)其加以保護(hù) 說明:若對(duì)所使用的全局變量不加以保護(hù),則此函數(shù)就不具有可重入性,即當(dāng)多個(gè)進(jìn)程調(diào)用此函數(shù)時(shí),很有可能使有關(guān)全局變量變?yōu)椴豢芍獱顟B(tài)。 示例:假設(shè)Exam是int型全局變量,函數(shù)Squre_Exam返回Exam平方值。那么如下函數(shù)不具有可重入性。unsigned int example( int para ) unsigned int temp; Exam = para; / (*) temp = Square_Exam( ); return temp;41此函數(shù)若被多個(gè)進(jìn)程調(diào)用的話,其結(jié)果可能是未知的,因?yàn)楫?dāng)(*)語句剛執(zhí)行完后,另外一個(gè)使用本函數(shù)的進(jìn)程可能正好被激活,那么當(dāng)新
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 建設(shè)工程項(xiàng)目管理委托合同
- 小型建筑工程合同
- 泰州eps墻體施工方案
- pvc塑膠運(yùn)動(dòng)地板施工方案
- 醫(yī)學(xué)影像學(xué)診斷技能習(xí)題集
- 室外鋼爬梯施工方案
- 除塵器氣包維修施工方案
- 租房酒店改造方案
- 樓頂廣告牌加固施工方案
- 連續(xù)橋梁的施工方案
- 2025年安陽職業(yè)技術(shù)學(xué)院單招綜合素質(zhì)考試題庫及參考答案1套
- 2025年內(nèi)蒙古建筑職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫1套
- 11《認(rèn)識(shí)多媒體技術(shù)》教學(xué)設(shè)計(jì)、教材分析與教學(xué)反思2024年滇人版初中信息技術(shù)七年級(jí)下冊
- 2025年湖南環(huán)境生物職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫一套
- 2025年湖南安全技術(shù)職業(yè)學(xué)院單招職業(yè)技能測試題庫參考答案
- DB3202-T 1063-2024 質(zhì)量基礎(chǔ)設(shè)施“-站式”服務(wù)與建設(shè)規(guī)范
- 2025年廣東省深圳法院招聘書記員招聘144人歷年高頻重點(diǎn)模擬試卷提升(共500題附帶答案詳解)
- 百所名校高一數(shù)學(xué)試卷
- DBJ50-T-029-2019 地質(zhì)災(zāi)害防治工程設(shè)計(jì)標(biāo)準(zhǔn)
- 第九章-或有事項(xiàng)教學(xué)教材
- 《服務(wù)技能提升》課件
評(píng)論
0/150
提交評(píng)論