C語言編程及命名規(guī)范_第1頁
C語言編程及命名規(guī)范_第2頁
C語言編程及命名規(guī)范_第3頁
C語言編程及命名規(guī)范_第4頁
C語言編程及命名規(guī)范_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言命名及編程標準CXL前言標準的重要性今天人們越來越明白軟件設計更多地是一種工程,而不是一種個人藝術。由于大型產(chǎn)品的開發(fā)通常由很多的人協(xié)同作戰(zhàn),如果不統(tǒng)一編程標準,最終合到一起的程序,其可讀性將較差,這不僅給代碼的理解帶來障礙,增加維護階段的工作量,同時不標準的代碼隱含錯誤的可能性也比較大。前言標準的重要性BELL實驗室的研究資料說明,軟件錯誤中18%左右產(chǎn)生于概要設計階段,15%左右產(chǎn)生于詳細設計階段,而編碼階段產(chǎn)生的錯誤占的比例那么接近50%;分析說明,編碼階段產(chǎn)生的錯誤當中,語法錯誤大概占20%左右,而由于未嚴格檢查軟件邏輯導致的錯誤、函數(shù)(模塊)之間接口錯誤及由于代碼可理解度低導致優(yōu)化維護階段對代碼的錯誤修改引起的錯誤那么占了一半以上??梢?,提高軟件質(zhì)量必須降低編碼階段的錯誤率。如何有效降低編碼階段的錯誤呢?BELL實驗室的研究人員制定了詳細的軟件編程標準,并培訓每一位程序員,最終的結果把編碼階段的錯誤降至10%左右,同時也降低了程序的測試費用,效果相當顯著。前言標準的重要性本文從代碼的可維護性(可讀、可理解性、可修改性)、代碼邏輯與效率、函數(shù)(模塊)接口、可測試性四個方面闡述了軟件編程標準;分為二個局部介紹,第一局部為命名標準,第二局部為編程標準。本標準為天馬公司強制執(zhí)行工程。前言標準的重要性我們制定一種編程風格,希望能到達以下目的:

可移植(Portability)

連貫(Consistency)

整潔(Neatness)

易于維護(Easymaintenance)

易于理解(Easyunderstanding)

簡潔(Simplicity)

在一個團隊合作的大型工程中,這種風格要貫穿始終。采用通用的代碼編寫風格可以減輕代碼維護的工作量并降低維護費用;這種通用的代碼風格還可以防止重寫代碼。第一局部C語言命名標準一、通那么1、在所有命名中,都應使用標準的英文單詞或縮寫。不得使用拼音或拼音縮寫,除非該名字描述的是中文特有的內(nèi)容,如半角、全角,

聲母、韻母等。2、所有命名都應遵循達意原那么,即名稱應含義清晰、明確。3、所有命名都不易過長,應控制在規(guī)定的最大長度以內(nèi),一般不超過32個字節(jié)。第一局部C語言命名標準一、通那么4、所有命名都應盡量使用全稱。5、如果命名使用縮寫,那么盡量應該使用通用縮寫;如不知道通用縮寫,那么必須對其進行注釋和說明。6、縮寫原那么形成縮寫的幾種技術:1)去掉所有的不在詞頭的元音字母。如screen寫成scrn,primtive寫成prmv。第一局部C語言命名標準6、縮寫原那么2)使用每個單詞的頭一個或幾個字母。如ChannelActivation寫成ChanActiv,ReleaseIndication寫成RelInd。3)使用變量名中每個有典型意義的單詞。如CountofFailure寫成FailCnt。4)去掉無用的單詞后綴ing,ed等。如PagingRequest寫成PagReq。5)使用標準的或慣用的縮寫形式(包括協(xié)議文件中出現(xiàn)的縮寫形式)。如BSIC(BaseStationIdentificationCode)、MAP(MobileApplicationPart)。第一局部C語言命名標準6、縮寫原那么關于縮寫的準那么:1)縮寫應該保持一致性。如Channel不要有時縮寫成Chan,有時縮寫成Ch。Length有時縮寫成Len,有時縮寫成len。2)在源代碼頭部參加注解來說明協(xié)議相關的、非通用縮寫。3)標識符的長度不超過32個字符。第一局部C語言命名標準二、具體標準1、工程名根據(jù)工程來命名,能反映工程的最主要特征。例如:天馬公司的Windows控制程序,工程名可命為TWIN2、文件名基于工程名,開頭3個字母應說明與哪一個工程相關。后面的字母應能夠區(qū)別不同的功能。嚴格區(qū)分大小寫。長度不限于8.3格式,建議不多于30個字符。假設文件用于定義和實現(xiàn)函數(shù)(類),建議文件名與函數(shù)〔類〕名保持一致。第一局部C語言命名標準2、文件名例如:TWIN工程的文件名的前三個字符為TW_,TW_ToolPosmeter.cppTW_MachParameter.cppTW_SpindlePos.cpp等等第一局部C語言命名標準3、函數(shù)名參照工程具體的命名標準。推薦使用動賓結構。函數(shù)名應清晰反映函數(shù)的功能、用途。函數(shù)名最長不得超過30個字符。函數(shù)名是復合詞的,每個單詞采用第一個字母大寫,其它字母小寫方式。全局函數(shù)必須以小寫前綴"g"開頭。例如:longOpenControl(void);第一局部C語言命名標準4、變量名原那么上,變量名的命名遵從匈牙利記法。即:前綴

+

類型

+

變量名其中:前綴是可選項,以小寫字母表示;根本類型是必選項,以小寫字母表示;變量名是必選項,可多個單詞(或縮寫)合在一起,每個單詞首字母大寫。變量名最長不得超過20個字符。第一局部C語言命名標準4、變量名前綴列表如下:前綴意義舉例ms_類的靜態(tài)成員變量ms_ListFuncm_類成員變量或m_ListBox,模塊級變量m_Sizes_靜態(tài)全局變量s_Countg_普通全局變量g_MyVar第一局部C語言命名標準4、變量名根本類型列表如下:根本類型意義 舉例b布爾 bIsOKby字節(jié) byNumc 字符 cMyChari整數(shù) iTestNumberu無符號整數(shù)uCountul無符號長整數(shù)ulTimew字 wPara第一局部C語言命名標準4、變量名根本類型意義 舉例dw雙字dwParal長型lParaf浮點數(shù)fTotald長浮點數(shù)dDatah句柄hWndp指針pTheWordlp長指針lpCmda數(shù)組aErr第一局部C語言命名標準4、變量名根本類型意義 舉例sString字符串sTempszNULL結束的字符串szTrees[]enm枚舉型enmDaysxyx,y坐標xyPos第一局部C語言命名標準5、類名類名反映具體含義,以清晰表達類的用途和功能為原那么。接口必須以大寫"I"開頭,代表

Interface。當名稱由多個單詞構成時,每一個單詞的第一個字母必須大寫。第一局部C語言命名標準6、宏和常量的命名宏和常量的命名規(guī)那么:單詞的字母全部大寫,各單詞之間可用下劃線隔開。命名舉例:例如:#define

MAXNUMBER

100#defineMAX_SLOT_NUM8#defineEI_ENCR_INFO0x07#defineDO(do){iRet=do;if(iRet)returniRet;}第一局部C語言命名標準7、結構和結構成員的命名結構名各單詞的字母均為大寫,單詞間可用下劃線連接??捎没虿挥胻ypedef,但是要保持一致,不能有的結構用typedef,有的又不用。結構變量加小寫前綴“t"。typedef

struct

POINT{int

x;int

y;}

tPOINT;結構成員的命名同變量的命名規(guī)那么。第一局部C語言命名標準8、枚舉和枚舉成員的命名枚舉名各單詞的字母均為大寫,單詞間可用下劃線隔開。枚舉成員的命名規(guī)那么:單詞的字母全部大寫,各單詞之間可用下劃線隔開;要求各成員的第一個單詞相同。枚舉變量加小寫前綴“e“.命名舉例:typedef

enum

_KFILE_OPEN_MODE{FILE_OPEN_READONLY

=

0,FILE_OPEN_READWRITE

=

1,FILE_CREATE_ALWAY

=

3}

eKFILE_OPEN_MODE;第一局部C語言命名標準9、聯(lián)合名聯(lián)合名各單詞的字母均為大寫,單詞間可用下劃線連接。聯(lián)合變量名加小寫前綴“j“,其成員按變量命名。例:typedef

union

_VARIANT{char

cVal;int

iVal;long

lVal;float

fVal;}jVARIANT;第二局部C語言編程標準一、

整體要求

代碼編寫規(guī)那么應該在建立在一個工程工程之前。該規(guī)那么應該貫穿整個工程的始終以保證代碼的一致性。采用標準的代碼編寫慣例,可大大簡化工程的維護負擔。第二局部C語言編程標準二、編程具體標準1、根本要求1.1程序結構清析,簡單易懂,單個函數(shù)的程序行數(shù)一般不得超過200行。

1.2代碼精簡,防止垃圾程序。

1.3盡量使用預定義變量。

1.4不要隨意定義全局變量,盡量使用局部變量。

1.5使用括號以防止二義性第二局部C語言編程標準2、可讀性要求2.1可讀性第一,效率第二。

2.2保持注釋與代碼完全一致。

2.3每個源程序文件,都有文件頭說明,說明規(guī)格見標準。

2.4每個函數(shù),都有函數(shù)頭說明,說明規(guī)格見標準。

2.5主要變量定義或引用時,注釋能反映其含義。

2.7定義全局變量要有相應說明。

2.8處理過程的每個階段都有相關注釋說明。

2.9在典型算法前都有注釋。2.10在一行內(nèi)只寫一條語句,并采用空格、空行和移行保證清楚的視覺效果第二局部C語言編程標準2、可讀性要求2.11利用縮進來顯示程序的邏輯結構,縮進量一致定義為2個空格。

2.12循環(huán)、分支層次不要超過五層。

2.13注釋可以與語句在同一行,也可以在上行。

2.14空行和空白字符也是一種特殊注釋。

2.15一目了然的語句不加注釋。

2.16注釋的作用范圍可以為:定義、引用、條件分支以及一段代碼。

2.17注釋行數(shù)〔不包括程序頭和函數(shù)頭說明部份〕應占總行數(shù)的1/5到1/3。第二局部C語言編程標準2、可讀性要求例一:函數(shù)的可讀性格式longGetAxisStatus(intiAxisCode,long*lStatus){longlStatus;longlResult;

SetAxisAddress(iAxisCode);lResult=GetStatus(lResult);returnlResult;}以上函數(shù)內(nèi)容縮進2個空格,可讀性強。第二局部C語言編程標準2、可讀性要求例二:一行只有一個語句,可用空格來對齊錯誤的例子:iLength=32,iWidth=16;正確的例子:iLength=32;iWidth=16;第二局部C語言編程標準2、可讀性要求例三:if(for、while等)語句的使用格式錯誤的例子:if(a==3){b=6;}if(a==3){b=6;}上例書寫格式看起來沒有層次感。第二局部C語言編程標準2、可讀性要求例三:if(for、while等)語句的使用格式正確的例子:if(a==3){b=6;}內(nèi)容縮進2個空格,層次清楚,可讀性強。第二局部C語言編程標準2、可讀性要求例四:switch語句的使用錯誤的例子:switch(code){case0:break;case1:break;default:break;}上例書寫格式看起來沒有層次感。第二局部C語言編程標準2、可讀性要求例四:switch語句的使用正確的例子:switch(code){case0:break;case1:break;default:break;}內(nèi)容縮進2個空格,層次清楚,可讀性強。第二局部C語言編程標準3、結構化要求3.1禁止出現(xiàn)兩條等價的支路。

3.2一般禁止GOTO語句。

3.3用IF語句來強調(diào)只執(zhí)行兩組語句中的一組。禁止ELSEGOTO。

3.4用CASE實現(xiàn)多路分支。

3.5防止從循環(huán)引出多個出口。

3.6一般函數(shù)只有一個出口。

3.7不使用條件賦值語句。

3.8防止不必要的分支。

3.9不要輕易用條件分支去替換邏輯表達式。第二局部C語言編程標準4、正確性與容錯性要求4.1程序首先是正確,其次是優(yōu)美

4.2無法證明你的程序沒有錯誤,因此在編寫完一段程序后,應先根據(jù)詳細設計回頭檢查。

4.3改一個錯誤時可能產(chǎn)生新的錯誤,因此在修改前首先考慮對其它程序的影響。

4.4所有變量在調(diào)用前必須被初始化。

4.5對所有的用戶輸入,必須進行合法性檢查。

4.6程序與環(huán)境或狀態(tài)發(fā)生關系時,必須主動去處理發(fā)生的意外事件,如文件能否邏輯鎖定、權限設定等。

4.7單元測試也是編程的一部份,提交聯(lián)調(diào)測試的程序必須通過單元測試。第二局部C語言編程標準5、可重用性要求5.1重復使用的完成相對獨立功能的算法或代碼應抽象為公共控件。

5.2公共控件應考慮OO思想,減少外界聯(lián)系,考慮獨立性或封裝性。

5.3公共控件應建立使用模板。第二局部C語言編程標準6、注釋6.1根據(jù)工程要求設定注釋語言;6.2文件開始注釋內(nèi)容包括:公司名稱、版權、作者名稱、時間、模塊用途、背景介紹等,復

雜的算法需要加上流程說明;6.3函數(shù)注釋包括:輸入、輸出、函數(shù)描述、流

溫馨提示

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

評論

0/150

提交評論