版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第第15章章 c+編碼規(guī)范編碼規(guī)范 本章講述的時候,可以利用word文檔來講,該章word文檔提供內(nèi)容提要n目前,計算機教育基本沒有灌輸高質(zhì)量程序設(shè)目前,計算機教育基本沒有灌輸高質(zhì)量程序設(shè)計的觀念,也很少自覺關(guān)心程序設(shè)計的規(guī)范性計的觀念,也很少自覺關(guān)心程序設(shè)計的規(guī)范性問題。問題。n本章主要介紹本章主要介紹c+編碼規(guī)范,主要從編碼規(guī)范,主要從4個方面?zhèn)€方面來探討:程序文件結(jié)構(gòu)、命名規(guī)則與可讀性、來探討:程序文件結(jié)構(gòu)、命名規(guī)則與可讀性、單元代碼的規(guī)范性以及程序的效率。全章內(nèi)容單元代碼的規(guī)范性以及程序的效率。全章內(nèi)容部分參考了國內(nèi)幾大軟件公司的編碼規(guī)范。部分參考了國內(nèi)幾大軟件公司的編碼規(guī)范。c+文件
2、的程序結(jié)構(gòu) n編程序可以跟著自己的思路編寫,但是閱讀別人的程序需要先理順程序的思路。n代碼的排版以及注釋將直接影響修改以及測試程序的效率。程序的排版 n(1)程序塊要采用縮進風(fēng)格編寫,縮進的空格數(shù)為4個。說明:對于由開發(fā)工具自動生成的代碼可以有不一致。n(2)相對獨立的程序塊之間、變量說明之后必須加空行。如下例子不符合規(guī)范。 nif (!valid_ni(ni) n n . / program code n nrepssn_ind = ssn_dataindex.repssn_index; n應(yīng)如下書寫: nif (!valid_ni(ni) nn . / program code n n n
3、repssn_ind = ssn_dataindex.repssn_index; 程序的排版n(3)較長的語句(80字符)要分成多行書寫,長表達式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首,劃分出的新行要進行適當(dāng)?shù)目s進,使排版整齊,語句可讀。n n(4)循環(huán)和判斷等語句中若有較長的表達式或語句,則要進行適應(yīng)的劃分,長表達式要在低優(yōu)先級操作符處劃分新行,操作符放在新行之首。 n(5)不允許把多個短語句寫在一行中,即一行只寫一條語句。如下例子不符合規(guī)范。程序的排版n6)if、for、do、while、case、switch和default等語句自占一行,且if、for、do、while等語句
4、的執(zhí)行語句部分無論多少都要加括號。 n(7)程序塊的分界符(如c/c+語言的大括號和)應(yīng)各獨占一行并且位于同一列,同時與引用它們的語句左對齊。n(8)在兩個以上的關(guān)鍵字、變量、常量進行對等操作時,它們之間的操作符之前、之后或者前后要加空格;進行非對等操作時,如果是關(guān)系密切的立即操作符(如)后不應(yīng)加空格。 注釋 n一般情況下,源程序有效注釋量必須在20以上。注釋的原則是有助于對程序的閱讀理解,在該加的地方都加了,注釋不宜太多也不能太少,注釋語言必須準(zhǔn)確、易懂、簡潔。包括11個方面。n(1)說明性文件(如頭文件.h文件、.inc文件、.def文件、編譯說明文件.cfg等)頭部應(yīng)進行注釋,注釋必須列
5、出:版權(quán)說明、版本號、生成日期、作者、內(nèi)容、功能、與其它文件的關(guān)系、修改日志等,頭文件的注釋中還應(yīng)有函數(shù)功能簡要說明。 注釋 n(2)源文件頭部應(yīng)進行注釋,列出:版權(quán)說明、版本號、生成日期、作者、模塊目的/功能、主要函數(shù)及其功能、修改日志等。 n(3)函數(shù)頭部應(yīng)進行注釋,列出:函數(shù)的目的/功能、輸入?yún)?shù)、輸出參數(shù)、返回值、調(diào)用關(guān)系(函數(shù)、表)等。 注釋n(4)邊寫代碼邊注釋,修改代碼同時修改相應(yīng)的注釋,以保證注釋與代碼的一致性,不再有用的注釋要刪除。盡量避免在注釋中使用縮寫,特別是常用縮寫。如果使用,在使用縮寫時或之前,應(yīng)對縮寫進行必要的說明。n(5)注釋應(yīng)與其描述的代碼相近,對代碼的注釋應(yīng)放
6、在其上方或右方(對單條語句的注釋)相鄰位置,不可放在下面,如放于上方則需與其上面的代碼用空行隔開。 命名規(guī)則與可讀性 n程序中變量、常量、標(biāo)識符、函數(shù)以及類名,在實際工程編碼的時候,需要遵循一定的規(guī)范。n一般不同的軟件公司,命名規(guī)范可能會有所區(qū)別,但是總體上來說,都大同小異??傊诰帉懘a的時候,命名規(guī)則都應(yīng)該和項目組其他成員保持一致。 標(biāo)識符命名 n(1)標(biāo)識符的命名要清晰明了,有明確含義,同時使用完整的單詞或大家基本可以理解的縮寫,避免使人產(chǎn)生誤解。較短的單詞可通過去掉“元音”形成縮寫;較長的單詞可取單詞的頭幾個字母形成縮寫;一些單詞有大家公認(rèn)的縮寫。n(2)自己特有的命名風(fēng)格,要自始至
7、終保持一致,不可來回變化。個人的命名風(fēng)格,在符合所在項目組或產(chǎn)品組的命名規(guī)則的前提下,才可使用。即命名規(guī)則中沒有規(guī)定到的地方才可有個人命名風(fēng)格。 標(biāo)識符命名 n(3)對于變量命名,禁止取單個字符(如i、j、k.),建議除了要有具體含義外,還能表明其變量類型、數(shù)據(jù)類型等,但i、j、k作局部循環(huán)變量是允許的。n(4)命名規(guī)范必須與所使用的系統(tǒng)風(fēng)格保持一致,并在同一項目中統(tǒng)一,比如采用unix的全小寫加下劃線的風(fēng)格或大小寫混排的方式,不要使用大小寫與下劃線混排的方式,用作特殊標(biāo)識如標(biāo)識成員變量或全局變量的m_和g_,其后加上大小寫混排的方式是允許的。 提高程序的可讀性 n(1)注意運算符的優(yōu)先級,并
8、用括號明確表達式的操作順序,避免使用默認(rèn)優(yōu)先級。防止閱讀程序時產(chǎn)生誤解,防止因默認(rèn)的優(yōu)先級與設(shè)計思想不符而導(dǎo)致程序出錯。n(2)避免使用不易理解的數(shù)字,用有意義的標(biāo)識來替代。涉及物理狀態(tài)或者含有物理意義的常量,不應(yīng)直接使用數(shù)字,必須用有意義的枚舉或宏來代替。 提高程序的可讀性n(3)源程序中關(guān)系較為緊密的代碼應(yīng)盡可能相鄰,便于程序閱讀和查找。 n(4)不要使用難懂的技巧性很高的語句,除非很有必要時。高技巧語句不等于高效率的程序,實際上程序的效率關(guān)鍵在于算法。如下表達式,考慮不周就可能出問題,也較難理解。單元代碼的規(guī)范n單元代碼包括:變量、結(jié)構(gòu)、函數(shù)和類。n一個完整的程序必然由這些單元所組成,因
9、此這些單元必須遵守一定的編寫規(guī)范。變量和結(jié)構(gòu) n(1)去掉沒必要的公共變量。公共變量是增大模塊間耦合的原因之一,故應(yīng)減少沒必要的公共變量以降低模塊間的耦合度。n(2)仔細定義并明確公共變量的含義、作用、取值范圍及公共變量間的關(guān)系。在對變量聲明的同時,應(yīng)對其含義、作用及取值范圍進行注釋說明,同時若有必要還應(yīng)說明與其它變量的關(guān)系。n(3)防止局部變量與公共變量同名。若使用了較好的命名規(guī)則,那么此問題可自動消除。n(4)結(jié)構(gòu)的功能要單一,是針對一種事務(wù)的抽象。設(shè)計結(jié)構(gòu)時應(yīng)力爭使結(jié)構(gòu)代表一種現(xiàn)實事務(wù)的抽象,而不是同時代表多種。結(jié)構(gòu)中的各元素應(yīng)代表同一事務(wù)的不同側(cè)面,而不應(yīng)把描述沒有關(guān)系或關(guān)系很弱的不同
10、事務(wù)的元素放到同一結(jié)構(gòu)中 函數(shù) n函數(shù)是c+程序的基本功能單元,其重要性不言而喻。函數(shù)設(shè)計的細微缺點很容易導(dǎo)致該函數(shù)被錯用,所以光使函數(shù)的功能正確是不夠的n。n(1)函數(shù)的規(guī)模盡量限制在200行以內(nèi)。n(2)減少函數(shù)本身或函數(shù)間的遞歸調(diào)用。遞歸調(diào)用特別是函數(shù)間的遞歸調(diào)用(如a-b-c-a),影響程序的可理解性;遞歸調(diào)用一般都占用較多的系統(tǒng)資源(如??臻g);遞歸調(diào)用對程序的測試有一定影響。故除非為某些算法或功能的實現(xiàn)方便,應(yīng)減少沒必要的遞歸調(diào)用。 函數(shù)n(3)參數(shù)書寫要完整,不要貪圖省事只寫參數(shù)的類型而省略參數(shù)名字。如果函數(shù)沒有參數(shù),則用void填充。例如:nvoid setvalue(int
11、width, int height);/ 良好的風(fēng)格nvoid setvalue(int, int); / 不良的風(fēng)格nfloat getvalue(void);/ 良好的風(fēng)格nfloat getvalue();/ 不良的風(fēng)格n(4)參數(shù)命名要恰當(dāng),順序要合理。編寫字符串拷貝函數(shù)stringcopy,它有兩個參數(shù)。如果把參數(shù)名字起為str1和str2,例如nvoid stringcopy(char *str1, char *str2);函數(shù)n(5)如果參數(shù)是指針,且僅作輸入用,則應(yīng)在類型前加const,以防止該指針在函數(shù)體內(nèi)被意外修改。例如:nvoid stringcopy(char *str
12、destination,const char *strsource);n(6)避免函數(shù)有太多的參數(shù),參數(shù)個數(shù)盡量控制在5個以內(nèi)。如果參數(shù)太多,在使用時容易將參數(shù)類型或順序搞錯。n(7)不要省略返回值的類型。c語言中,凡不加類型說明的函數(shù),一律自動按整型處理。這樣做不會有什么好處,卻容易被誤解為void類型。nc+語言有很嚴(yán)格的類型安全檢查,不允許上述情況發(fā)生。由于c+程序可以調(diào)用c函數(shù),為了避免混亂,規(guī)定任何c+/ c函數(shù)都必須有類型。如果函數(shù)沒有返回值,那么應(yīng)聲明為void類型。n(8)有時候函數(shù)原本不需要返回值,但為了增加靈活性如支持鏈?zhǔn)奖磉_,可以附加返回值n程序一般分為debug版本和r
13、elease版本,debug版本用于內(nèi)部調(diào)試,release版本發(fā)行給用戶使用。使用斷言案例名稱:使用案例名稱:使用assert程序名稱:程序名稱:proj15_01.cpp#include#includevoidmain()int*p=null;assert(p);函數(shù)n(10)在函數(shù)體的“入口處”,對參數(shù)的有效性進行檢查。很多程序錯誤是由非法參數(shù)引起的,我們應(yīng)該充分理解并正確使用“斷言”(assert)來防止此類錯誤。n(11)在函數(shù)體的“出口處”,對return語句的正確性和效率進行檢查。如果函數(shù)有返回值,那么函數(shù)的“出口處”是return語句。如果return語句寫得不好,函數(shù)要么出錯
14、,要么效率低下。提高可測試性和程序效率 n在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,需要提高程序的可測性、程序效率、保證質(zhì)量以及合理使用宏定義。可測性 n(1)在同一項目組或產(chǎn)品組內(nèi),要有一套統(tǒng)一的為集成測試與系統(tǒng)聯(lián)調(diào)準(zhǔn)備的調(diào)測開關(guān)及相應(yīng)打印函數(shù),并且要有詳細的說明。n(2)編程的同時要為單元測試選擇恰當(dāng)?shù)臏y試點,并仔細構(gòu)造測試代碼、測試用例,同時給出明確的注釋說明。測試代碼部分應(yīng)作為(模塊中的)一個子模塊,以方便測試代碼在模塊中的安裝與拆卸(通過調(diào)測開關(guān))。 n(4)在進行集成測試/系統(tǒng)聯(lián)調(diào)之前,要構(gòu)造好測試環(huán)境、測試項目及測試用例,同時仔細分析并優(yōu)化測試用例,以提高測試效率。
15、好的測試用例應(yīng)盡可能模擬出程序所遇到的邊界值、各種復(fù)雜環(huán)境及一些極端情況等。n(4)對較復(fù)雜的斷言加上明確的注釋。為復(fù)雜的斷言加注釋,可澄清斷言含義并減少不必要的誤用。程序效率 n(1)編程時要經(jīng)常注意代碼的效率。代碼效率分為全局效率、局部效率、時間效率及空間效率。全局效率是站在整個系統(tǒng)的角度上的系統(tǒng)效率;局部效率是站在模塊或函數(shù)角度上的效率;時間效率是程序處理輸入任務(wù)所需的時間長短;空間效率是程序所需內(nèi)存空間,如機器代碼空間大小、數(shù)據(jù)空間大小、??臻g大小等。 n(2)在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,提高代碼效率。不能一味地追求代碼效率,而對軟件的正確性、穩(wěn)定性、可讀性
16、及可測性造成影響。 質(zhì)量保證 n(1)在軟件設(shè)計過程中構(gòu)筑軟件質(zhì)量。代碼質(zhì)量保證優(yōu)先原則:n(2)防止引用已經(jīng)釋放的內(nèi)存空間。在實際編程過程中,稍不留心就會出現(xiàn)在一個模塊中釋放了某個內(nèi)存塊(如c語言指針),而另一模塊在隨后的某個時刻又使用了它。要防止這種情況發(fā)生。n(3)防止內(nèi)存操作越界。內(nèi)存操作主要是指對數(shù)組、指針、內(nèi)存地址等的操作。內(nèi)存操作越界是軟件系統(tǒng)主要錯誤之一,后果往往非常嚴(yán)重,所以當(dāng)我們進行這些操作時一定要仔細小心。 使用宏 n(1)用宏定義表達式時,要使用完備的括號。n n(2)將宏所定義的多條表達式放在大括號中。下面的語句只有宏的第一條表達式被執(zhí)行。 小結(jié)n本章需要重點理解本章
17、需要重點理解c+編碼規(guī)范的作用和意編碼規(guī)范的作用和意義。了解義。了解c+程序的排版方式、以及各種注程序的排版方式、以及各種注釋的添加方法。釋的添加方法。n熟悉各種命名規(guī)則以及如何提高程序的可讀性。熟悉各種命名規(guī)則以及如何提高程序的可讀性。在程序規(guī)范單元代碼的編寫:變量、結(jié)構(gòu)、函在程序規(guī)范單元代碼的編寫:變量、結(jié)構(gòu)、函數(shù)和類。數(shù)和類。n熟悉如何提高程序的可測試性和程序效率。熟悉如何提高程序的可測試性和程序效率。本章習(xí)題n1、寫出、寫出 bool flag 與與“零值零值”比較的比較的 if 語句:語句:_n2、寫出、寫出 float x 與與“零值零值”比較的比較的 if 語句:語句:_n3、寫出、寫出 char *p 與與“零值零值”比較的比較的 if 語句:語句:_n4、以下為、以下為windows 2000/2003下的下的32位位c+程序,請計算程序,請計算sizeof的值的值nchar str = “hello” ;nchar *p = str ;nint
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45065-2024皮革和毛皮化學(xué)試驗揮發(fā)性甲基環(huán)硅氧烷殘留量的測定
- 二零二五年度房地產(chǎn)投資居間服務(wù)盡職調(diào)查合同3篇
- 二零二五年度二手車過戶業(yè)務(wù)資金監(jiān)管及擔(dān)保服務(wù)合同
- 二零二五年度出租車車輛租賃與乘客服務(wù)滿意度調(diào)查合同3篇
- 二零二五年度SEO關(guān)鍵詞研究及分析服務(wù)合同2篇
- 二零二五年度海上貨物共同海損處理合同3篇
- 二零二五年度新媒體短視頻節(jié)目制作服務(wù)協(xié)議2篇
- 豌豆的種植課程設(shè)計
- 2025年度數(shù)據(jù)中心冷卻系統(tǒng)安裝工程合同9篇
- 二零二五年度房屋買賣合同范本:維修基金結(jié)算3篇
- 七年級生物上冊期末測試卷(各版本)
- 07FD02防空地下室電氣設(shè)備安裝圖集
- 基礎(chǔ)會計(第7版)ppt課件完整版
- Q∕SY 1206.1-2009 油氣管道通信系統(tǒng)通用技術(shù)規(guī)范 第1部分:光傳輸系統(tǒng)
- 汽車4S店八大運營業(yè)績指標(biāo)管控培訓(xùn)_89頁
- 設(shè)備安裝、調(diào)試及驗收質(zhì)量保證措施
- 火力發(fā)電廠生產(chǎn)技術(shù)管理導(dǎo)則
- 汽輪機葉片振動與分析
- 地質(zhì)工作個人述職報告三篇
- 產(chǎn)品可追溯流程圖圖
- 形意拳九歌八法釋意
評論
0/150
提交評論