![編程注意事項_第1頁](http://file4.renrendoc.com/view/4a487330e0baa12e78be239e3f754519/4a487330e0baa12e78be239e3f7545191.gif)
![編程注意事項_第2頁](http://file4.renrendoc.com/view/4a487330e0baa12e78be239e3f754519/4a487330e0baa12e78be239e3f7545192.gif)
![編程注意事項_第3頁](http://file4.renrendoc.com/view/4a487330e0baa12e78be239e3f754519/4a487330e0baa12e78be239e3f7545193.gif)
![編程注意事項_第4頁](http://file4.renrendoc.com/view/4a487330e0baa12e78be239e3f754519/4a487330e0baa12e78be239e3f7545194.gif)
![編程注意事項_第5頁](http://file4.renrendoc.com/view/4a487330e0baa12e78be239e3f754519/4a487330e0baa12e78be239e3f7545195.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
編程注意事項程序不僅需要給計算機(jī)讀,也要給程序員讀。程序設(shè)計風(fēng)格的原則,代碼應(yīng)該清楚的和簡單的,具有直截了當(dāng)?shù)倪壿?自然的表達(dá)式,通行的語言使用方式,有意義的名字和幫助作用和注釋。一名字全局變量命名使用說明性的名字,局部變量用短名字保持名字的清晰可讀和一致性函數(shù)采用動作性名字,要準(zhǔn)確對于變量命名,禁止取用單個字符。(做局部循環(huán)變量除外)一般命名采用全小寫加下劃線或大小寫混排的方式,不要使用既有大小寫又有下劃線的命名方式。除非必要,不要用數(shù)字或較奇怪的字符來定義標(biāo)志符。即變量、函數(shù)、宏命名只能由26個字母,及下劃線的一個子集來組成,不能使用”$”等特殊符號。在同一軟件產(chǎn)品內(nèi),應(yīng)規(guī)劃好接口部分的標(biāo)志符(變量、常量、結(jié)構(gòu)、函數(shù))的命名,防止編譯、鏈接時產(chǎn)生錯誤沖突。自定義類型名以大寫字母開頭,各單詞之間以大寫字母分隔,如CallType(即駱駝式命名法)。變量名以小寫字母開頭,各單詞之間以大寫字母分隔(變量活動范圍前綴以下劃線分隔),如m_pReleaseIn。函數(shù)名以大寫字母開頭,各單詞之間以大寫字母分隔(進(jìn)程、進(jìn)程頁及子函數(shù)前綴以下劃線分隔),如Sub_ErrorDealing。變量名以小寫的變量類型指示符(或類型組合)作為前綴開頭,(即匈牙利式命名法與駱駝式命名法的結(jié)合)常用類型前綴列表如下:p:pointerbit:bit型變量b:unsignedchar或BYTEw:unsignedshort或WORDdw:unsignedlong或DWORDstr:字符串以上前綴可以進(jìn)一步組合成新的類型,自定義的數(shù)據(jù)類型可以自己規(guī)定類型前綴,如果該類型使用較為廣泛,可以統(tǒng)一規(guī)定為我公司內(nèi)部的通用前綴。符號名長度應(yīng)大于等于2個字節(jié),增加程序的可讀性。循環(huán)語句(如FOR、WHILE、DO等)中的計數(shù)器可采用ii、jj等代替i、j,以避免出現(xiàn)例外下劃線符號'_'不要出現(xiàn)在符號名的開始或結(jié)尾,因為這類符號名不夠醒目,容易與不帶下劃線'_'的符號名混淆(條件編譯例外,且只能用兩個下劃線)。一個符號名中間不應(yīng)出現(xiàn)連續(xù)兩個'_',因為兩個'_'與一個'_'之間的區(qū)別不明顯,容易混淆(條件編譯的前后下劃線例外,且只能用兩個下劃線,中間下劃線不能用連續(xù)兩個'_')。命名宏定義時,表示最大個數(shù)時定義為XXX_MAX_NUM(如最大子節(jié)點個數(shù)可用SNODE_MAX_NUM表示),表示最大取值時定義為XXX_MAX(如PT板E1的最大取值可用PT_E1_MAX表示)。定義最小個數(shù)時定義為XXX_MIN_NUM,定義最小取值時定義為XXX_MIN。(以防止下標(biāo)使用時難以分辨是否需要減1)。二一致性和語句,表達(dá)式程序塊要采用縮進(jìn)風(fēng)格編寫相對獨立的程序塊之間、變量說明之后必須加空行。較長的語句要分多行書寫,在低優(yōu)先級操作符處劃分新行,操作符放在新行之首。劃分出的新行進(jìn)行適當(dāng)?shù)目s進(jìn)。循環(huán)、判斷等語句中有較長的表達(dá)式或語句,要進(jìn)行適當(dāng)?shù)膭澐?,在低?yōu)先級操作符處劃分新行,操作符放在新行之首。一行只寫一條語句。盡量不使用goto語句;除了錯誤處理跳轉(zhuǎn)函數(shù)或過程中的參數(shù)較長,則要進(jìn)行適當(dāng)?shù)膭澐?。函?shù)體內(nèi)所有內(nèi)部變量必須在函數(shù)開始部分程序和注釋行不要超過70列函數(shù)或過程的開始、結(jié)構(gòu)的定義及循環(huán)、判斷等語句中的代碼都要采用縮進(jìn)風(fēng)格,case語句下的情況也要遵從語句縮進(jìn)要求。函數(shù)必須在開始部分寫明缺省的返回值程序和注釋行不要超過70列不要太相信函數(shù)的調(diào)用者,在內(nèi)部要作好檢查和保護(hù)當(dāng)向公共變量傳遞數(shù)據(jù)時,應(yīng)十分小心,防止賦予不合理的值或越界等現(xiàn)象發(fā)生。對于動態(tài)數(shù)組和字符串要使用標(biāo)準(zhǔn)函數(shù)對長度進(jìn)行檢查模塊聲明順序:常量-變量-事件-外部函數(shù)和過程-屬性-方法過程;公共-友元-私有三注釋一般情況下,注釋必須與其上面的代碼用空行隔開。說明文件(如.h文件、.inc文件、.def文件、編譯說明文件.cfg等)頭部應(yīng)進(jìn)行注釋,注釋必須列出:版權(quán)說明、版l本號、生成日期、作者、內(nèi)容、功能、與其他文件的關(guān)系、修改日志等,頭文件的注釋中還應(yīng)有函數(shù)功能簡要說明。源文件頭部應(yīng)進(jìn)行注釋,注釋必須列出:版權(quán)說明、版本號、生成日期、作者、模塊目的/功能、主要函數(shù)及其功能、修改日志等。函數(shù)頭部應(yīng)進(jìn)行注釋,列出;函數(shù)的目的/功能、輸入輸出參數(shù)、返回值、調(diào)用關(guān)系、(函數(shù)、表)等。邊寫代碼邊注釋,修改代碼的同時修改注釋,以保證代碼與注釋的一致性。刪除不再有用的注釋。注釋的內(nèi)容要清楚、明了、含義準(zhǔn)確,防止注釋二義性,盡量說明原因、代碼作用及后果。避免在注釋中使用縮寫。注釋應(yīng)與其描述的代碼相近,對代碼的注釋應(yīng)放在其上方或右方相鄰位置,不可放在下面,放于上方應(yīng)與其上面的代碼用空行隔開。對于所有有物理含義的變量、常量,如果其命名不是充分自注釋的,在聲明時必須加注釋說明其含義。數(shù)據(jù)結(jié)構(gòu)聲明(包括數(shù)組、結(jié)構(gòu)、類、枚舉等),如果其命名不是充分自注釋的必須加以注釋。對數(shù)據(jù)結(jié)構(gòu)的注釋應(yīng)放在其上方相鄰位置,不可放在下面;結(jié)構(gòu)中的每個域的注釋放在其右方。全局變量要有較詳細(xì)的注釋,包括對其功能、取值范圍、哪些函數(shù)或過程存取它以及存取時注意事項等的說明。注釋要和所注釋的內(nèi)容進(jìn)行同樣的縮排。對于switch語句下的case語句,如果因為特殊情況需要處理完一個case后進(jìn)入下一個case處理,必須在case處理完、下一個case語句前加上明確的注釋。避免在一行代碼或表達(dá)式的中間插入注釋。通過對函數(shù)或過程、變量、結(jié)構(gòu)等正確的命名以及合理地組織代碼的結(jié)構(gòu),使代碼成為自注釋的。在代碼的功能、意圖層次上進(jìn)行注釋,提供額外、有用的信息。在程序塊的結(jié)束行右方加注釋標(biāo)記,以表明某程序塊的結(jié)束。注釋盡量使用中文。源文件中必須有被調(diào)用函數(shù)顯示的函數(shù)原型說明。當(dāng)函數(shù)復(fù)雜時應(yīng)說明其算法四變量使用申明過的變量必須被使用,沒有被使用的變量應(yīng)從程序中取消。明確公共變量與操作此公共變量的函數(shù)或過程的關(guān)系,如訪問、修改、及創(chuàng)建等。防止局部變量與公共變量同名結(jié)構(gòu)的功能要單一,是針對一種事務(wù)的抽象。不同結(jié)構(gòu)間的關(guān)系不要過于復(fù)雜。結(jié)構(gòu)中元素的個數(shù)應(yīng)適中。若結(jié)構(gòu)中元素個數(shù)過多可考慮依據(jù)某種原則把元素組成不同的子結(jié)構(gòu),以減少原結(jié)構(gòu)中元素的個數(shù)。仔細(xì)設(shè)計結(jié)構(gòu)中元素的布局與排列順序,使結(jié)構(gòu)容易理解、節(jié)省占用空間、減少誤用的可能。全局變量不能作為函數(shù)的參數(shù)。對于動態(tài)創(chuàng)建的數(shù)據(jù)對象必須在相應(yīng)程序釋放要顯示地動態(tài)創(chuàng)建對象,不要使用ASNEW方式定義對自定義數(shù)據(jù)類型進(jìn)行恰當(dāng)命名,使它成為自描述性的,以提高代碼的可讀性。注意命名方式在同一產(chǎn)品中的統(tǒng)一。五函數(shù),過程對于調(diào)用函數(shù)的錯誤返回碼要進(jìn)行仔細(xì)、全面的處理。明確函數(shù)的功能,精確(而不是近似)地實現(xiàn)函數(shù)設(shè)計。編寫可重入函數(shù)時,應(yīng)注意局部變量的使用。編寫可重入函數(shù)時,若使用全局變量,則應(yīng)通過關(guān)中斷、信號量等手段對其加以保護(hù)。防止將函數(shù)的參數(shù)作為工作變量。函數(shù)的規(guī)模盡量控制在200行以內(nèi)。一個函數(shù)僅完成一個功能。簡單的功能也要編寫一個函數(shù)表示。不要設(shè)計多用途、面面俱到的函數(shù)。函數(shù)的功能應(yīng)該是可以預(yù)測的,即輸入相同時,輸出也應(yīng)該相同。盡量不要編寫依賴于其他函數(shù)內(nèi)部實現(xiàn)的函數(shù)。避免設(shè)計多參數(shù)函數(shù),不使用的參數(shù)從接口中去掉。非調(diào)度函數(shù)應(yīng)防止或減少控制參數(shù),盡量只使用數(shù)據(jù)參數(shù)。檢查函數(shù)所有參數(shù)輸入的有效性。檢查函數(shù)所有非參數(shù)輸入的有效性,如數(shù)據(jù)文件、公共變量等。函數(shù)名應(yīng)準(zhǔn)確描述函數(shù)的功能。使用動賓詞組為執(zhí)行某操作的函數(shù)命名。避免使用無意義的或含義不清的動詞為函數(shù)命名。函數(shù)的返回值要清楚、明了,讓使用者不容易忽視錯誤情況。除非必要,最好不要以編譯系統(tǒng)默認(rèn)的轉(zhuǎn)換方式或強(qiáng)制的轉(zhuǎn)換方式把與函數(shù)返回值類型不同的變量作為返回值返回。讓函數(shù)在調(diào)用點顯得易懂、容易理解。在調(diào)用函數(shù)填寫參數(shù)時,應(yīng)盡量減少沒有必要的默認(rèn)數(shù)據(jù)類型轉(zhuǎn)換方式或強(qiáng)制的數(shù)據(jù)類型轉(zhuǎn)換方式。去除函數(shù)中不必要的語句,防止程序中的垃圾代碼。防止把沒有關(guān)聯(lián)的語句放到一個函數(shù)中。注意函數(shù)劃分上的問題,如應(yīng)該防止多段代碼重復(fù)做同一件事。功能不明確、較小的函數(shù),特別是只有一個上級函數(shù)調(diào)用它時,應(yīng)考慮把它合并到上一級函數(shù)中,不必單獨存在。不使用函數(shù)本身或函數(shù)間的遞歸調(diào)用。仔細(xì)分析模塊的功能及性能需求,并進(jìn)一步細(xì)分,若有必要畫出數(shù)據(jù)流程圖,據(jù)此來進(jìn)行模塊的函數(shù)劃分與組織。優(yōu)化模塊中函數(shù)的結(jié)構(gòu),降低函數(shù)間的耦合度,并提高函數(shù)的獨立性,代碼的可讀性、效率和可維護(hù)性。優(yōu)化遵守以下原則:(1)不能影響模塊功能的實現(xiàn)(2)仔細(xì)考查模塊或函數(shù)的出錯處理及模塊的性能要求并進(jìn)行完善(3)通過分解或合并函數(shù)來改進(jìn)軟件結(jié)構(gòu),考查函數(shù)的規(guī)模,過大的要進(jìn)行分解(4)設(shè)法降低函數(shù)間接口的復(fù)雜度(5)不同層次的函數(shù)調(diào)用要有合理的扇入和扇出6)提高函數(shù)內(nèi)聚(7)函數(shù)功能應(yīng)可預(yù)測在多任務(wù)操作系統(tǒng)的環(huán)境下編程,應(yīng)注意函數(shù)可重入性的構(gòu)造。函數(shù)的嵌套深度限制在5級以內(nèi),以增加程序的可讀性,并減少出錯的危險。函數(shù)的所有參數(shù)都應(yīng)該在函數(shù)體內(nèi)被使用,以減少錯誤(建議)。調(diào)用具有返回值的函數(shù)時,必須判斷返回的結(jié)果,并根據(jù)返回值作相應(yīng)處理(建議)。函數(shù)的參數(shù)表中所有參數(shù)的總長度不能大于40個字節(jié),一些自定義的結(jié)構(gòu)參量可以采用傳遞指針的方式進(jìn)行參數(shù)傳遞,這樣可以減少函數(shù)調(diào)用對系統(tǒng)堆棧的需求,同時防止因堆棧溢出引起的軟件故障(建議)。六可測性在同一項目組或產(chǎn)品組內(nèi),要有一套統(tǒng)一的為集成測試與系統(tǒng)聯(lián)調(diào)準(zhǔn)備的調(diào)測開關(guān)及相應(yīng)打印函數(shù),并要有詳細(xì)說明。在同一項目組或產(chǎn)品組內(nèi),調(diào)測打印出的信息串的格式要有統(tǒng)一規(guī)定的形式,信息串中至少要有所在模塊名(或源文件名)及行號。編程的同時要為單元測試選擇恰當(dāng)?shù)臏y試點,并仔細(xì)構(gòu)造測試代碼、測試用例,同時給出明確的注釋說明。測試代碼部分應(yīng)作為一個子模塊,以方便測試代碼在模塊中的安裝與拆卸(通過調(diào)測開關(guān))。在進(jìn)行集成測試/系統(tǒng)聯(lián)調(diào)之前,要構(gòu)造好測試環(huán)境、測試項目及測試用例,同時仔細(xì)分析并優(yōu)化測試用例,以提高測試效率。斷言設(shè)置:斷言是在調(diào)試版本中使用的一種條件判斷,它表示程序執(zhí)行到某一點時必須滿足的條件,若條件不滿足則引起程序中斷。而在正式版本中斷言以空語句代替。前束斷言:在函數(shù)的人口處應(yīng)設(shè)置前束斷言,對本函數(shù)輸入?yún)?shù)在正常運(yùn)行時不可能出現(xiàn)的情況做斷言檢查;該斷言主要用于在調(diào)試版本中盡早暴露函數(shù)調(diào)用者的錯誤。后束斷言:在函數(shù)的出口處設(shè)置后束斷言,對本函數(shù)返回值在正常運(yùn)行時不可能出現(xiàn)的情況做斷言檢查;該斷言主要用于在調(diào)試版本中盡早暴露函數(shù)處理過程中的錯誤。循環(huán)不變式:在各種可變條件循環(huán)中,對在循環(huán)過程中應(yīng)滿足的條件作斷言檢查;該斷言主要用于在調(diào)試版本中檢查循環(huán)的合法性和數(shù)據(jù)結(jié)構(gòu)的完整性;(建議)使用斷言來發(fā)現(xiàn)軟件問題,提高代碼可測性。廣泛采用斷言,以增強(qiáng)程序的調(diào)試功能。用斷言來檢查程序正常運(yùn)行時不應(yīng)發(fā)生但在調(diào)測時有可能發(fā)生的非法情況。不能用斷言來檢查最終產(chǎn)品肯定會出現(xiàn)且必須處理的錯誤情況。對較復(fù)雜的斷言加上明確的注釋。用斷言確認(rèn)函數(shù)的參數(shù)。用斷言保證沒有定義的特性或功能不被使用。用斷言對程序開發(fā)環(huán)境的假設(shè)進(jìn)行檢查。正式軟件產(chǎn)品中應(yīng)把斷言及其他調(diào)測代碼去掉(即把有關(guān)的調(diào)測開關(guān)關(guān)掉)。在軟件系統(tǒng)中設(shè)置與取消有關(guān)測試手段,不能對軟件實現(xiàn)的功能等產(chǎn)生影響。用調(diào)測開關(guān)來切換軟件的DEBUG版本和正式版,而不要同時存在正式版本和DEBUG版本的不同源文件,以減少維護(hù)的難度。軟件的DEBUG版本和正式發(fā)行版本應(yīng)該統(tǒng)一維護(hù),不允許分家,并且要時刻注意保證兩個在實現(xiàn)功能上的一致性。在編寫代碼之前,應(yīng)預(yù)先設(shè)計好程序調(diào)試與測試的方法和手段,并設(shè)計好各種調(diào)測開關(guān)及相應(yīng)測試代碼如打印函數(shù)等。調(diào)測開關(guān)應(yīng)分為不同級別和類型。編寫防錯程序,然后在處理錯誤之后可用斷言宣布發(fā)生錯誤。在程序設(shè)計中,對異常情況的處理方法有兩種:(1)若該異常情況會在正式版本中出現(xiàn),則應(yīng)保留對該情況的處理分支;(2)若該異常情況只會在調(diào)試階段出現(xiàn),則應(yīng)對該異常做斷言檢查。七程序效率編程時要經(jīng)常注意代碼的效率。在保證軟件系統(tǒng)的正確性、穩(wěn)定性、可讀性及可測性的前提下,提高代碼效率。局部效率應(yīng)為全局效率服務(wù),不能因為提高局部效率而對全局效率造成影響。通過對系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的劃分與組織的改進(jìn),以及對程序算法的優(yōu)化來提高空間效率。仔細(xì)分析有關(guān)算法,并進(jìn)行優(yōu)化。仔細(xì)考查、分析系統(tǒng)及模塊處理輸入(事務(wù)、消息等)的方式,并加以改進(jìn)。對模塊中函數(shù)的劃分及組織方式進(jìn)行分析、優(yōu)化,改進(jìn)模塊中函數(shù)的組織結(jié)構(gòu),提高程序效率。編程時,要隨時留心代碼效率;優(yōu)化代碼時要考慮周全。不必花過多時間用以提高不經(jīng)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度建筑合同施工合同爭議解決范本
- 2025年個人租房協(xié)議書合同樣本(2篇)
- 2025年度建筑用混凝土預(yù)制構(gòu)件設(shè)計及施工合同
- 2025年度光伏發(fā)電場鉆孔施工合同
- 2025年度客車駕駛員勞動合同執(zhí)行細(xì)則
- 2025年度婚慶場地租賃合同書范本
- 2025年度市政基礎(chǔ)設(shè)施工程招標(biāo)投標(biāo)合同管理細(xì)則與實施策略
- 2025年度健身房健身課程版權(quán)購買與授權(quán)合同
- 2025年度展覽翻譯兼職服務(wù)合同范本
- 2025年度生態(tài)旅游區(qū)基礎(chǔ)設(shè)施建設(shè)合同履行
- 肩周炎康復(fù)護(hù)理
- 2022年安徽管子文化旅游集團(tuán)有限公司招聘筆試試題及答案解析
- SAPPM設(shè)備管理解決方案
- Q-HN-1-0000.08.004《風(fēng)力發(fā)電場電能質(zhì)量監(jiān)督技術(shù)標(biāo)準(zhǔn)》
- 多指畸形-課件
- 宗教與社會課件
- 3人-機(jī)-環(huán)-管理本質(zhì)安全化措施課件
- 生殖醫(yī)學(xué)中心建設(shè)驗收標(biāo)準(zhǔn)分析-講座課件PPT
- 慶陽煤炭資源開發(fā)調(diào)研報告
- 橋博常見問題
- 貴州省電梯日常維護(hù)保養(yǎng)合同范本
評論
0/150
提交評論