




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言命名及編程標(biāo)準(zhǔn)CXL前言標(biāo)準(zhǔn)的重要性今天人們?cè)絹碓矫靼总浖O(shè)計(jì)更多地是一種工程,而不是一種個(gè)人藝術(shù)。由于大型產(chǎn)品的開發(fā)通常由很多的人協(xié)同作戰(zhàn),如果不統(tǒng)一編程標(biāo)準(zhǔn),最終合到一起的程序,其可讀性將較差,這不僅給代碼的理解帶來障礙,增加維護(hù)階段的工作量,同時(shí)不標(biāo)準(zhǔn)的代碼隱含錯(cuò)誤的可能性也比較大。前言標(biāo)準(zhǔn)的重要性BELL實(shí)驗(yàn)室的研究資料說明,軟件錯(cuò)誤中18%左右產(chǎn)生于概要設(shè)計(jì)階段,15%左右產(chǎn)生于詳細(xì)設(shè)計(jì)階段,而編碼階段產(chǎn)生的錯(cuò)誤占的比例那么接近50%;分析說明,編碼階段產(chǎn)生的錯(cuò)誤當(dāng)中,語(yǔ)法錯(cuò)誤大概占20%左右,而由于未嚴(yán)格檢查軟件邏輯導(dǎo)致的錯(cuò)誤、函數(shù)(模塊)之間接口錯(cuò)誤及由于代碼可理解度低導(dǎo)致優(yōu)化維護(hù)階段對(duì)代碼的錯(cuò)誤修改引起的錯(cuò)誤那么占了一半以上??梢?,提高軟件質(zhì)量必須降低編碼階段的錯(cuò)誤率。如何有效降低編碼階段的錯(cuò)誤呢?BELL實(shí)驗(yàn)室的研究人員制定了詳細(xì)的軟件編程標(biāo)準(zhǔn),并培訓(xùn)每一位程序員,最終的結(jié)果把編碼階段的錯(cuò)誤降至10%左右,同時(shí)也降低了程序的測(cè)試費(fèi)用,效果相當(dāng)顯著。前言標(biāo)準(zhǔn)的重要性本文從代碼的可維護(hù)性(可讀、可理解性、可修改性)、代碼邏輯與效率、函數(shù)(模塊)接口、可測(cè)試性四個(gè)方面闡述了軟件編程標(biāo)準(zhǔn);分為二個(gè)局部介紹,第一局部為命名標(biāo)準(zhǔn),第二局部為編程標(biāo)準(zhǔn)。本標(biāo)準(zhǔn)為天馬公司強(qiáng)制執(zhí)行工程。前言標(biāo)準(zhǔn)的重要性我們制定一種編程風(fēng)格,希望能到達(dá)以下目的:
可移植(Portability)
連貫(Consistency)
整潔(Neatness)
易于維護(hù)(Easymaintenance)
易于理解(Easyunderstanding)
簡(jiǎn)潔(Simplicity)
在一個(gè)團(tuán)隊(duì)合作的大型工程中,這種風(fēng)格要貫穿始終。采用通用的代碼編寫風(fēng)格可以減輕代碼維護(hù)的工作量并降低維護(hù)費(fèi)用;這種通用的代碼風(fēng)格還可以防止重寫代碼。第一局部C語(yǔ)言命名標(biāo)準(zhǔn)一、通那么1、在所有命名中,都應(yīng)使用標(biāo)準(zhǔn)的英文單詞或縮寫。不得使用拼音或拼音縮寫,除非該名字描述的是中文特有的內(nèi)容,如半角、全角,
聲母、韻母等。2、所有命名都應(yīng)遵循達(dá)意原那么,即名稱應(yīng)含義清晰、明確。3、所有命名都不易過長(zhǎng),應(yīng)控制在規(guī)定的最大長(zhǎng)度以內(nèi),一般不超過32個(gè)字節(jié)。第一局部C語(yǔ)言命名標(biāo)準(zhǔn)一、通那么4、所有命名都應(yīng)盡量使用全稱。5、如果命名使用縮寫,那么盡量應(yīng)該使用通用縮寫;如不知道通用縮寫,那么必須對(duì)其進(jìn)行注釋和說明。6、縮寫原那么形成縮寫的幾種技術(shù):1)去掉所有的不在詞頭的元音字母。如screen寫成scrn,primtive寫成prmv。第一局部C語(yǔ)言命名標(biāo)準(zhǔn)6、縮寫原那么2)使用每個(gè)單詞的頭一個(gè)或幾個(gè)字母。如ChannelActivation寫成ChanActiv,ReleaseIndication寫成RelInd。3)使用變量名中每個(gè)有典型意義的單詞。如CountofFailure寫成FailCnt。4)去掉無用的單詞后綴ing,ed等。如PagingRequest寫成PagReq。5)使用標(biāo)準(zhǔn)的或慣用的縮寫形式(包括協(xié)議文件中出現(xiàn)的縮寫形式)。如BSIC(BaseStationIdentificationCode)、MAP(MobileApplicationPart)。第一局部C語(yǔ)言命名標(biāo)準(zhǔn)6、縮寫原那么關(guān)于縮寫的準(zhǔn)那么:1)縮寫應(yīng)該保持一致性。如Channel不要有時(shí)縮寫成Chan,有時(shí)縮寫成Ch。Length有時(shí)縮寫成Len,有時(shí)縮寫成len。2)在源代碼頭部參加注解來說明協(xié)議相關(guān)的、非通用縮寫。3)標(biāo)識(shí)符的長(zhǎng)度不超過32個(gè)字符。第一局部C語(yǔ)言命名標(biāo)準(zhǔn)二、具體標(biāo)準(zhǔn)1、工程名根據(jù)工程來命名,能反映工程的最主要特征。例如:天馬公司的Windows控制程序,工程名可命為TWIN2、文件名基于工程名,開頭3個(gè)字母應(yīng)說明與哪一個(gè)工程相關(guān)。后面的字母應(yīng)能夠區(qū)別不同的功能。嚴(yán)格區(qū)分大小寫。長(zhǎng)度不限于8.3格式,建議不多于30個(gè)字符。假設(shè)文件用于定義和實(shí)現(xiàn)函數(shù)(類),建議文件名與函數(shù)〔類〕名保持一致。第一局部C語(yǔ)言命名標(biāo)準(zhǔn)2、文件名例如:TWIN工程的文件名的前三個(gè)字符為TW_,TW_ToolPosmeter.cppTW_MachParameter.cppTW_SpindlePos.cpp等等第一局部C語(yǔ)言命名標(biāo)準(zhǔn)3、函數(shù)名參照工程具體的命名標(biāo)準(zhǔn)。推薦使用動(dòng)賓結(jié)構(gòu)。函數(shù)名應(yīng)清晰反映函數(shù)的功能、用途。函數(shù)名最長(zhǎng)不得超過30個(gè)字符。函數(shù)名是復(fù)合詞的,每個(gè)單詞采用第一個(gè)字母大寫,其它字母小寫方式。全局函數(shù)必須以小寫前綴"g"開頭。例如:longOpenControl(void);第一局部C語(yǔ)言命名標(biāo)準(zhǔn)4、變量名原那么上,變量名的命名遵從匈牙利記法。即:前綴
+
類型
+
變量名其中:前綴是可選項(xiàng),以小寫字母表示;根本類型是必選項(xiàng),以小寫字母表示;變量名是必選項(xiàng),可多個(gè)單詞(或縮寫)合在一起,每個(gè)單詞首字母大寫。變量名最長(zhǎng)不得超過20個(gè)字符。第一局部C語(yǔ)言命名標(biāo)準(zhǔn)4、變量名前綴列表如下:前綴意義舉例ms_類的靜態(tài)成員變量ms_ListFuncm_類成員變量或m_ListBox,模塊級(jí)變量m_Sizes_靜態(tài)全局變量s_Countg_普通全局變量g_MyVar第一局部C語(yǔ)言命名標(biāo)準(zhǔn)4、變量名根本類型列表如下:根本類型意義 舉例b布爾 bIsOKby字節(jié) byNumc 字符 cMyChari整數(shù) iTestNumberu無符號(hào)整數(shù)uCountul無符號(hào)長(zhǎng)整數(shù)ulTimew字 wPara第一局部C語(yǔ)言命名標(biāo)準(zhǔn)4、變量名根本類型意義 舉例dw雙字dwParal長(zhǎng)型lParaf浮點(diǎn)數(shù)fTotald長(zhǎng)浮點(diǎn)數(shù)dDatah句柄hWndp指針pTheWordlp長(zhǎng)指針lpCmda數(shù)組aErr第一局部C語(yǔ)言命名標(biāo)準(zhǔn)4、變量名根本類型意義 舉例sString字符串sTempszNULL結(jié)束的字符串szTrees[]enm枚舉型enmDaysxyx,y坐標(biāo)xyPos第一局部C語(yǔ)言命名標(biāo)準(zhǔn)5、類名類名反映具體含義,以清晰表達(dá)類的用途和功能為原那么。接口必須以大寫"I"開頭,代表
Interface。當(dāng)名稱由多個(gè)單詞構(gòu)成時(shí),每一個(gè)單詞的第一個(gè)字母必須大寫。第一局部C語(yǔ)言命名標(biāo)準(zhǔn)6、宏和常量的命名宏和常量的命名規(guī)那么:單詞的字母全部大寫,各單詞之間可用下劃線隔開。命名舉例:例如:#define
MAXNUMBER
100#defineMAX_SLOT_NUM8#defineEI_ENCR_INFO0x07#defineDO(do){iRet=do;if(iRet)returniRet;}第一局部C語(yǔ)言命名標(biāo)準(zhǔn)7、結(jié)構(gòu)和結(jié)構(gòu)成員的命名結(jié)構(gòu)名各單詞的字母均為大寫,單詞間可用下劃線連接??捎没虿挥胻ypedef,但是要保持一致,不能有的結(jié)構(gòu)用typedef,有的又不用。結(jié)構(gòu)變量加小寫前綴“t"。typedef
struct
POINT{int
x;int
y;}
tPOINT;結(jié)構(gòu)成員的命名同變量的命名規(guī)那么。第一局部C語(yǔ)言命名標(biāo)準(zhǔn)8、枚舉和枚舉成員的命名枚舉名各單詞的字母均為大寫,單詞間可用下劃線隔開。枚舉成員的命名規(guī)那么:單詞的字母全部大寫,各單詞之間可用下劃線隔開;要求各成員的第一個(gè)單詞相同。枚舉變量加小寫前綴“e“.命名舉例:typedef
enum
_KFILE_OPEN_MODE{FILE_OPEN_READONLY
=
0,FILE_OPEN_READWRITE
=
1,FILE_CREATE_ALWAY
=
3}
eKFILE_OPEN_MODE;第一局部C語(yǔ)言命名標(biāo)準(zhǔn)9、聯(lián)合名聯(lián)合名各單詞的字母均為大寫,單詞間可用下劃線連接。聯(lián)合變量名加小寫前綴“j“,其成員按變量命名。例:typedef
union
_VARIANT{char
cVal;int
iVal;long
lVal;float
fVal;}jVARIANT;第二局部C語(yǔ)言編程標(biāo)準(zhǔn)一、
整體要求
代碼編寫規(guī)那么應(yīng)該在建立在一個(gè)工程工程之前。該規(guī)那么應(yīng)該貫穿整個(gè)工程的始終以保證代碼的一致性。采用標(biāo)準(zhǔn)的代碼編寫慣例,可大大簡(jiǎn)化工程的維護(hù)負(fù)擔(dān)。第二局部C語(yǔ)言編程標(biāo)準(zhǔn)二、編程具體標(biāo)準(zhǔn)1、根本要求1.1程序結(jié)構(gòu)清析,簡(jiǎn)單易懂,單個(gè)函數(shù)的程序行數(shù)一般不得超過200行。
1.2代碼精簡(jiǎn),防止垃圾程序。
1.3盡量使用預(yù)定義變量。
1.4不要隨意定義全局變量,盡量使用局部變量。
1.5使用括號(hào)以防止二義性第二局部C語(yǔ)言編程標(biāo)準(zhǔn)2、可讀性要求2.1可讀性第一,效率第二。
2.2保持注釋與代碼完全一致。
2.3每個(gè)源程序文件,都有文件頭說明,說明規(guī)格見標(biāo)準(zhǔn)。
2.4每個(gè)函數(shù),都有函數(shù)頭說明,說明規(guī)格見標(biāo)準(zhǔn)。
2.5主要變量定義或引用時(shí),注釋能反映其含義。
2.7定義全局變量要有相應(yīng)說明。
2.8處理過程的每個(gè)階段都有相關(guān)注釋說明。
2.9在典型算法前都有注釋。2.10在一行內(nèi)只寫一條語(yǔ)句,并采用空格、空行和移行保證清楚的視覺效果第二局部C語(yǔ)言編程標(biāo)準(zhǔn)2、可讀性要求2.11利用縮進(jìn)來顯示程序的邏輯結(jié)構(gòu),縮進(jìn)量一致定義為2個(gè)空格。
2.12循環(huán)、分支層次不要超過五層。
2.13注釋可以與語(yǔ)句在同一行,也可以在上行。
2.14空行和空白字符也是一種特殊注釋。
2.15一目了然的語(yǔ)句不加注釋。
2.16注釋的作用范圍可以為:定義、引用、條件分支以及一段代碼。
2.17注釋行數(shù)〔不包括程序頭和函數(shù)頭說明部份〕應(yīng)占總行數(shù)的1/5到1/3。第二局部C語(yǔ)言編程標(biāo)準(zhǔn)2、可讀性要求例一:函數(shù)的可讀性格式longGetAxisStatus(intiAxisCode,long*lStatus){longlStatus;longlResult;
SetAxisAddress(iAxisCode);lResult=GetStatus(lResult);returnlResult;}以上函數(shù)內(nèi)容縮進(jìn)2個(gè)空格,可讀性強(qiáng)。第二局部C語(yǔ)言編程標(biāo)準(zhǔn)2、可讀性要求例二:一行只有一個(gè)語(yǔ)句,可用空格來對(duì)齊錯(cuò)誤的例子:iLength=32,iWidth=16;正確的例子:iLength=32;iWidth=16;第二局部C語(yǔ)言編程標(biāo)準(zhǔn)2、可讀性要求例三:if(for、while等)語(yǔ)句的使用格式錯(cuò)誤的例子:if(a==3){b=6;}if(a==3){b=6;}上例書寫格式看起來沒有層次感。第二局部C語(yǔ)言編程標(biāo)準(zhǔn)2、可讀性要求例三:if(for、while等)語(yǔ)句的使用格式正確的例子:if(a==3){b=6;}內(nèi)容縮進(jìn)2個(gè)空格,層次清楚,可讀性強(qiáng)。第二局部C語(yǔ)言編程標(biāo)準(zhǔn)2、可讀性要求例四:switch語(yǔ)句的使用錯(cuò)誤的例子:switch(code){case0:break;case1:break;default:break;}上例書寫格式看起來沒有層次感。第二局部C語(yǔ)言編程標(biāo)準(zhǔn)2、可讀性要求例四:switch語(yǔ)句的使用正確的例子:switch(code){case0:break;case1:break;default:break;}內(nèi)容縮進(jìn)2個(gè)空格,層次清楚,可讀性強(qiáng)。第二局部C語(yǔ)言編程標(biāo)準(zhǔn)3、結(jié)構(gòu)化要求3.1禁止出現(xiàn)兩條等價(jià)的支路。
3.2一般禁止GOTO語(yǔ)句。
3.3用IF語(yǔ)句來強(qiáng)調(diào)只執(zhí)行兩組語(yǔ)句中的一組。禁止ELSEGOTO。
3.4用CASE實(shí)現(xiàn)多路分支。
3.5防止從循環(huán)引出多個(gè)出口。
3.6一般函數(shù)只有一個(gè)出口。
3.7不使用條件賦值語(yǔ)句。
3.8防止不必要的分支。
3.9不要輕易用條件分支去替換邏輯表達(dá)式。第二局部C語(yǔ)言編程標(biāo)準(zhǔn)4、正確性與容錯(cuò)性要求4.1程序首先是正確,其次是優(yōu)美
4.2無法證明你的程序沒有錯(cuò)誤,因此在編寫完一段程序后,應(yīng)先根據(jù)詳細(xì)設(shè)計(jì)回頭檢查。
4.3改一個(gè)錯(cuò)誤時(shí)可能產(chǎn)生新的錯(cuò)誤,因此在修改前首先考慮對(duì)其它程序的影響。
4.4所有變量在調(diào)用前必須被初始化。
4.5對(duì)所有的用戶輸入,必須進(jìn)行合法性檢查。
4.6程序與環(huán)境或狀態(tài)發(fā)生關(guān)系時(shí),必須主動(dòng)去處理發(fā)生的意外事件,如文件能否邏輯鎖定、權(quán)限設(shè)定等。
4.7單元測(cè)試也是編程的一部份,提交聯(lián)調(diào)測(cè)試的程序必須通過單元測(cè)試。第二局部C語(yǔ)言編程標(biāo)準(zhǔn)5、可重用性要求5.1重復(fù)使用的完成相對(duì)獨(dú)立功能的算法或代碼應(yīng)抽象為公共控件。
5.2公共控件應(yīng)考慮OO思想,減少外界聯(lián)系,考慮獨(dú)立性或封裝性。
5.3公共控件應(yīng)建立使用模板。第二局部C語(yǔ)言編程標(biāo)準(zhǔn)6、注釋6.1根據(jù)工程要求設(shè)定注釋語(yǔ)言;6.2文件開始注釋內(nèi)容包括:公司名稱、版權(quán)、作者名稱、時(shí)間、模塊用途、背景介紹等,復(fù)
雜的算法需要加上流程說明;6.3函數(shù)注釋包括:輸入、輸出、函數(shù)描述、流
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年養(yǎng)老保險(xiǎn)考試試題及答案
- 2025年電網(wǎng)會(huì)計(jì)面試題及答案
- 2025年你的理解測(cè)試題及答案
- 修身語(yǔ)100則:原文+譯文
- 2025年建材銷售面試試題及答案
- 2025年空間站面試題及答案
- 2025年股權(quán)銷售面試試題及答案
- 2025年測(cè)繪副總理論試題及答案
- 2025年高中資料測(cè)試題及答案
- 2025年骨生物力學(xué)試題及答案
- 2025年兼職銷售代表合同樣本
- 醫(yī)院財(cái)務(wù)知識(shí)培訓(xùn)
- 綠植花卉租賃合同
- 2025年內(nèi)蒙古建筑職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)及答案1套
- 部編人教版小學(xué)一年級(jí)道德與法制教案全冊(cè)
- DeepSeek從入門到精通進(jìn)階科普
- 眼視光行業(yè)現(xiàn)狀及展望
- 2025年多旋翼無人機(jī)超視距駕駛員執(zhí)照參考試題庫(kù)500題(附答案)
- 幼兒園學(xué)前班春季家長(zhǎng)會(huì)演講稿
- 2024年云南省高等職業(yè)技術(shù)教育招生考試數(shù)學(xué)試題
- 2025-2030年中國(guó)電船行業(yè)運(yùn)行狀況及發(fā)展?jié)摿Ψ治鰣?bào)告
評(píng)論
0/150
提交評(píng)論