




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、XX產品研究部收文:XX產品研究部軟件開發人員文檔版本:V0.11文檔編號產品版本密級開發適用共頁軟件開發代碼規范(僅供內部使用)擬制:審核:核準:簽發:日期:2011-5-11日期:日期:日期:目錄第一章原則4第二章排版52.1 空行52.2 代碼行62.3 代碼行內的空格62.4 對齊縮進72.5 長行拆分8第三章注釋103.1 通用規則103.2 文件注釋103.3 函數注釋113.4 數據注釋123.5 代碼注釋12第四章命名154.1 通用命名規則154.2 文件命名154.3 類型命名154.4 變量命名164.5 常量命名174.6 函數命名174.7 枚舉命名174.8 宏命名
2、1819第五章雜項.文件修改記錄修改頁他、章節、修改日期版本條款修改描述作者2011-4-290.1創建初稿周超1)修改3.4數據注釋【規則3.3數據注釋3-4-3全局變量注釋例子2011-5-110.114.3類型命名4.4變量命名2)在“4.3類型命名”、“4.4變量周超命名”、“4.6函數命名”中,增加對4.6函數命名前綴、關鍵縮與詞等可以適當全部大寫的處理。第一章原則本文檔的目的是提供一個公共的編碼規范。這個規范詳細闡述在編碼時要怎樣寫、不要怎樣寫,旨在提高代碼的可讀性、可維護性,使代碼易于管理,使所有人可以集中精力去實現內容,而非處理各種復雜的表現形式。使代碼易于管理的方法之一是增強
3、代碼一致性,讓別人可以讀懂你的代碼是很重要的,保持統一編程風格意味著可以輕松根據模式匹配”規則推斷各種符號的含義。創建通用的、必需的習慣用語和模式可以使代碼更加容易理解。雖然在某些情況下改變一些編程風格可能會是好的選擇,但我們還是應該遵循一致性原則,盡量不這樣去做。關鍵在于保持一致。第二章排版2.1 空行【規則2-1-1在每個函數、結構體、枚舉定義結束之后都要加空行。行分隔【規則2-1-2在一個函數體內,邏輯密切相關的語句之間不加空行,其它地方應加空struct st1;/空行enum;/空行void Function1(/空行void Function2(函數之間的空行/空行while (c
4、ondition)(statement/空行if (condition)(statement2;)else(statement3;)/空行statement4;)函數內部的空行【規則2-1-3相對獨立的程序塊之間、變量說明之后必須加空行f(!is_lock_card_succ)./programcodeGetLockPhonelnfo(&st_lock_phone_info)if(!is_lock_card_succ)(./programcode)/空格GetLockPhoneInfo(&stlockphoneinfo);不規范代碼規范代碼2.2 代碼行代碼容易閱讀,并且方執行
5、語句有多少都要加【規則2-2-11一行代碼只做一件事情,如只定義一個變量,或只寫一條語句。這樣的便于寫注釋。【規則2-2-2if、for、while、do等語句自占一行,執行語句不得緊跟其后。不論什。這樣可以防止書寫失誤。intwidth,height,depth;/寬度局度深度intwidth;/寬度intheight;/高度intdepth;/深度X=a+b;y=c+d;z=e+f;x=a+b;y=c+d;z=e+f;if(width<height)dosomething();if(width<height)dosomething();for(initialization;co
6、ndition;update)dosomething();other();for(initialization;condition;update)dosomething();/空行other();不規范代碼規范代碼2.3 代碼行內的空格說明:空格的目的在于更清晰的代碼。【規則2-3-1關鍵字之后要留空格。const、static等關鍵字之后至少要留一個空格,否則無法辨析關鍵字;if、for、while、switch等關鍵字之后應留一個空格再跟左括號('以突出關鍵字。【規則2-3-2函數名之后不要留空格,緊跟左括號(',以與關鍵字區別。【規則2-3-3('向后緊跟,:&q
7、uot;;向前緊跟,緊跟處不留空格。【規則2-3-4:'之后要留空格,如Function(x,y,z)。如果;不是一行的結束符號,其后要留空格,女口for(initialization;condition;update)。【規則2-3-5賦值操作符、比較操作符、算術操作符、邏輯操作符、位域操作符,如“二”"+="">=""<='""+”“*”“%,&&'、“<<”,“等二元操作符的前后應當加一個空格。【規則2-3-6】一元操作符如“!”“”“+”-"、
8、“&”(地址運算符)等前后不加空格。【規則2-3-7】象“口->這類操作符前后不加空格i<10; i+)【建議2-3-1】對于表達式比較長的for語句和if語句,為了緊湊起見可以適當地去掉一些空格,如for(i=0;良好風格和if(a<=b)&&(c<=d)voidFunc1(intx,inty,intz);voidFunc1(intx,inty,intz);if(year>=2000)if(year>=2000)if(a>=b)&&(c<=d)if(a>=b)&&(c<=d)i
9、f(a>=b&&c<=d)for(i=0;i<10;i+)for(i=0;i<10;i+)for(i=0;i<10;i+)x=a<b?a:b;x=a<b?a:b;i+;int*x=&y;i+;int*x=&y;array5=0;a.Function();b->Function();array5=0;a.Function。;b->Function();不良風2.4 對齊縮進【規則2-4-1】程序塊要采用縮進風格編寫【規則2-4-2對齊使用TAB鍵,TAB鍵寬度設置為4個空格。說明:應注意使用不同編輯器時,TAB
10、鍵設置不同造成的排版不同;應注意某些編輯器在識別、顯示TAB鍵上存在問題;最終排版應以在項目的主代碼編輯器(如VCSourceInsight等)中顯示一致統一、整潔清晰為準。SourceInsight中設置:Options->DoucumentOptions->“TabWidth:4”【規則2-4-3函數或過程的開始、結構的定義及循環、判斷等語句中的代碼都要采用縮進風格,case語句下的情況處理語句也要遵從語句縮進要求同時與if、【規則2-4-4】程序塊的分界符(如和'應各獨占一行并且位于同一列,引用它們的語句左對齊。在函數體的開始、類的定義、結構的定義、枚舉的定義以及fo
11、r、do、while、switch、case語句中的程序都要采用如上的縮進方式for(.)programcodefor(.)./programcodeif(.)programcodeif(.)./programcodevoidexample_fun(void)programcodevoidexample_fun(void)./programcode不規范代碼規范代碼【規則2-4-5預處理指令不需要縮進,總是從行首開始。即使預處理指令位于縮進代碼塊中,指令也應從行首開始。/良好風格:預處理指令均從行首開始if(lopsided_score)#ifDISASTER_PENDING/Correct-
12、StartsatbeginningoflineDropEverything();#ifNOTIFYNotifyClient();#endif#endifBackToNormal();/不良風格:縮進的預處理指令if(lopsided_score)#ifDISASTER_PENDING/Wrong!The"#if"shouldbeatbeginningoflineDropEverything();#endif/Wrong!Donotindent"#endif"BackToNormal();2.5長行拆分【規則2-5-1代碼行最大長度宜控制在100至110個
13、字符以內。代碼行不要過長,否則眼睛看不過來,也不便于打印。【規則2-5-2】較長的語句(110字符)要分成多行書寫;長表達式要在低優先級操作符處拆分成新行,操作符放在新行之首(以便突出操作符)。拆分出的新行要進行適當的縮進,使排版整齊,語句可讀。【規則2-5-3循環、判斷等語句中若有較長的表達式或語句,則要進行適應的劃分?長表達式要在低優先級操作符處劃分新行,操作符放在新行之首。【規則2-5-4若函數或過程中的參數較長,則要進行適當的劃分。if(very_longer_variable1>=very_longer_variable12)&&(very_longer_var
14、iable3<=very_longer_variable14)&&(very_longer_variable5<=very_longer_variable16)dosomething();virtualCMatrixCMultiplyMatrix(CMatrixleftMatrix,CMatrixrightMatrix);for(very_longer_initialization;very_longer_condition;very_longer_update)dosomething();report_or_not_flag=(taskno<MAX_ACT_
15、TASK_NUMBER)&&(n7stat_stat_item_valid(stat_item)&&(acttasktabletaskno.resultdata!=0);n7stat_str_compare(BYTE*)&stat_object,(BYTE*)&(act_task_tabletaskno.stat_object),sizeof(STATOBJECT);長行的拆分第三章注釋3.1 通用規則【規則3-1-1一般情況,需要保證程序有一定的注釋。必須保證關鍵的函數、流程、類型定義、變量等有相應注釋說明。說明:注釋的原則是有助于對程序的閱讀
16、理解,在該加的地方都加了,注釋不宜太多也不能太少,注釋語言必須準確、易懂、。【規則3-1-2注釋應當準確、易懂,防止注釋有二義性。說明:錯誤的注釋不但無益反而有害。【規則3-1-3除非能使用準確的英文表達,則使用中文注釋。【規則3-1-4避免在注釋中使用縮寫,特別是非常用縮寫。說明:在使用縮寫時或之前,應對縮寫進行必要的說明。【規則3-1-5】需要為代碼中使用的縮寫增加注釋,文件引入的新縮寫必須在文件頭部加以說明。【規則3-1-6通過對函數或過程、變量、結構等正確的命名以及合理地組織代碼的結構,使代碼成為自注釋的。說明:清晰準確的函數、變量等的命名,可增加代碼可讀性,并減少不必要的注釋。【規則
17、3-1-7注釋格式盡量統一。建議使用進行注釋,多行注釋可使用"/*?*?/"3.2 文件注釋【規則3-2】源文件(包含.h頭文件、.c源文件及各種腳本文件等)頭部應進行注釋,應列出:版權說明、文件名、文件目的/功能,作者、創建日期等;如果源文件引入了新的縮寫,則必須在文件頭部注釋說明。文件注釋格式定義如下(可以不局限于該格式中定義的內容,但必須包含該格式中定義的內容)*Copyright(C)2010-2011,XXXCo.Ltd.*Allrightsreserved.FileName:/Description:/Author:/作者文件名稱文件描述* Date:/創建時間
18、* Others:/其它說明*/1mmmm*Abbreviatio n:/如果文件引入了新的縮寫,則必須在此處加以說明*/舉例如下:/*FileName:Descriptio n: NVAuthor:Date:Others:starlib_ nvset.h參藪配置源文件zc2010/4/13Copyright (C) 2010-2011, XXX Co. Ltd. All rights reserved.*/*Abbreviation:NCM: Net Choose Menu網絡選擇菜單VBC: Voice Broadcast語音播報*/3.3 函數注釋【規則3-3】函數頭部應進行注釋,需要列
19、出函數的功能、參數、返回值等。函數注釋格式定義如下(可以不局限于該格式中定義的內容,但必須包含該格式中定義的/*/ Function:/函數名稱/ Descripti/ on:/ Param:/ Return:/ Others:/函數功能描述參數說明,包括參數的作用、取值范圍等,param1:輸入輸出類型IN/OUT/INOUTparam2:輸入輸出類型IN/OUT/INOUT函數返回值說明其它說明格式如下:說明說明/ Author:/作者/*/內容)舉例如下:/*/Function:StarLib_SetldleNetlconTypeDescription:設置待機界面網絡圖標PARAM:i
20、con:IN待機界面網絡圖標Return:設置成功=STARLIBTRUE/設置失敗=STARLIB_FALSE/Others:/Author:zc/*/3.4數據注釋【規則3-4-1J對于所有有物理含義的變量、常量,如果其命名不是充分自注釋的,在聲明時都必須加以注釋,說明其物理含義。變量、常量、宏的注釋應放在其上方相鄰位置或右方。/activestatistictasknumber#defineMAX_ACT_TASK_NUMBER1000#defineMAX_ACT_TASK_NUMBER1000/activestatistictasknumber【規則3-4-2J數據結構聲明(包括結構體
21、、枚舉、類等),如果其命名不是充分自注釋的,必須加以注釋。對數據結構的注釋應放在其上方相鄰位置;對結構中每個域的注釋放在該域的右方。/sccpinterfacewithsccpuserprimitivemessagenameenumSCCP_USER_PRIMITIVEN_UNITDATA_IND,/sccpnotifysccpuserunitdatacomeN_NOTICE_IND,/*sccpnotifyusertheNo.7networkcannottransmissionthismessage*/N_UNITDATA_REQ,/sccpuser'sunitdatatransmi
22、ssionrequest;【規則3-4-3J全局變量必須有注釋,包括對其功能、取值、及其他注意事項等的說明。/標志是否通過鎖卡流程;TURE=!過鎖卡流程,FALSE哪卡流程失敗PUBLICBOOLEANgsLockCardPass=FALSE;3.5代碼注釋修改代碼同時修改相應的注釋,以保證注釋與代碼的【規則3-5-1邊寫代碼邊注釋,-致性。不再有用的注釋要刪除!i+;/i力口1,多余的注釋【規則3-5-3在代碼的功能、意圖層次上進行注釋,提供有用、額外的信息/ifreceive_flagisTRUEif(receive_flag)/ifmtpreceiveamessagefromlinks
23、if(receive_flag)【規則3-5-4注釋應與其描述的代碼相鄰。對語句塊的注釋必須放在語句塊上方;對單條語句、變量定義的注釋可以放在上方或右方(建議放在右方);注釋不可放在下方。/getreplicatesubsystemindexandnetindicatorrepssn_ind=ssn_dataindex.repssn_index;repssn_ni=ssn_dataindex.ni;不良寫法一repssn_ind=ssn_dataindex.repssn_index;repssn_ni=ssn_dataindex.ni;/getreplicatesubsystemindexan
24、dnetindicator不良寫法二/getreplicatesubsystemindexandnetindicatorrepssn_ind=ssn_dataindex.repssn_index;repssnni=ssndataindex.ni;良好的寫法【規則3-5-5】如果注釋放在上方,則將注釋與其上面的代碼用空行隔方/codeonecommentsprogramcodeone/codetwocommentsprogramcodetwo/codeonecommentsprogramcodeone/codetwocommentsprogramcodetwo過于緊湊良好寫法【規則3-5-6避免
25、在一行代碼或表達式的中間插入注釋。說明:除非必要,不應在代碼或表達中間插入注釋,否則容易使代碼可理解性變差。【規則3-5-7】對于switch語句下的case語句,如果因為特殊情況需要處理完一個case后進入下一個case處理,必須在該case語句處理完、下一個case語句前加上明確的注釋。說明:這樣比較清楚程序編寫者的意圖,有效防止無故遺漏break語句。caseCMD_A:ProcessA();break;caseCMD_B:ProcessB();/跳轉至UcaseCMD_CcaseCMD_C:ProcessC();break;voidexample_fun(void)/codeoneco
26、mmentsCodeBlockOne/codetwocommentsCodeBlockTwovoidexample_fun(void)(/codeonecommentsCodeBlockOne/codetwocommentsCodeBlockTwo)不好的注釋縮排良好的注釋縮排第四章命名4.1 通用命名規則【規則4-1-1】標識符的命名要清晰明了,有明確含義;命名應具有描述性;一般而言,類型和變量應是名詞,函數應是命令性”動詞;intcounter;/計數器一名詞NET_ICON_TYPEicon_type;NET_ICON_TYPE網絡圖標類型一堵詞/設置IDLE頁面網絡圖標類型令性”動詞N
27、ET_ICON_TYPEStarLib_GetldleNetlconType();【規則4-1-2命名應使用使用完整的單詞或大家可以理解的縮寫,避免使人產生誤解如使用特殊約定或縮寫,要有注釋說明,可參見【規則3-3;需注意避免過度縮寫。/良好命名intnum_error;intnum_connections;NETTYPEStarLibGetNetWorkType();/過度縮寫intnerr;intn_conns;NETTYPEStarLibGetNWType();4.2 文件命名【規則4-2】文件名全部小寫;為避免由于文件名過長造成難以理解,可以在適當位置使用下劃線進行分隔。不良的文件命名
28、:mmieventmanager.h(過長難以理解)Star_HttpServer.h(含大寫字母)良好的文件命名:starlib_nv.hmmi_applet_table.hmmiccspeeddial.c4.3 類型命名【規則4-3-1結構體(struct)類型名遵循如下規則:每個單詞首字母大寫,單詞間使用下劃線相連,以_struct后綴結束;命名中的前綴、關鍵縮寫詞等可以適當的采取全部大寫。struct的typedef類型定義名遵循如下規則:和struct名采用相同命名,但全部字母大寫,單詞間使用下劃線相連,并以_T后綴結束。一般而言,struct需同時定義類型名和typedef名。ty
29、pedefstructAUDIO_Codec_Ext_Cfglnfo_struct/AUDIO為前縱,米取全郃大與AUDIO_CODEC_EXT_CFGINFO_T;【規則4-3-2枚舉(enumj)類型名遵循如下規則:每個單詞首字母大寫,單詞間使用下劃線相連,以_enum后綴結束;命名中的前綴、關鍵縮寫詞等可以適當的采取全部大寫。enum的typedef類型定義名遵循如下規則:和enum名采用相同命名,但全部字母大寫,單詞間使用下劃線相連,并以_E后綴結束。一般,enum無需定義類型名,僅需定義typedef名。typedefenumStar_Tel_Type_EnumSTARTELTYPE
30、E;【規則4-3-3函數指針(pointertofunction)的typdef名遵循如下規則:單詞全部字母大寫,單詞間使用下劃線相連,以PFUN后綴結束。typedefvoid(*AUDIO_NOTIFY_CALLBACK_PFUNC)(HAUDIOhAudio,uint32notify_info,uint32affix_info);4.4 變量命名【規則4-4-1J包括局部變量、全局變量、參數變量、成員變量,變量名一律小寫,單詞間使用下劃線相連;命名中的前綴、關鍵縮寫詞等可以適當的采取全部大寫。不良的命名:char*strTable;大小寫混雜,放棄使用該種命名方式良好的命名:AW_LCD
31、_PARAM_Tlcd_param;charnv_phone_num10;voidStarLib_GetKeyRinglnfo(U8*key_type_ptr,U8*key_vol_ptr);【規則4-4-2靜態全局變量使用s_前綴,普通全局變量使用g_前綴。ATC_INFO_Tg_atc_info_table10;普通全局變量staticBOOLEANsbatterystatus;靜態全局變量【規則4-4-3對于變量命名,禁止使用單個字符(如i、j、k等)。i、j、k等僅能用作局部循環變量。單個字母唯一可使用的場合for(i=0;i<max;i+)4.5常量命名【規則4-5-1 常量名全部字母大寫。4.6const floatconst intPI = 3.14;VAL_MIN = 1;函數命名【規則4-6-1 函數名中每個單詞首字母大寫;為避免由于函數名過長造成難以理解,可以在適當位置使用下劃線進行分隔;部大寫。命名中的前綴、關鍵縮寫詞等可以適當的采取全不良的命名:charge_init(); 未采用正確的大小寫規則MMIAPICCProcessVideoCallPhoneNumExt();/函數名太長且沒有分隔,造成理解困難良好命名:Charge_Init();MMIAPICC_ProcessVideoCallPhoneNumExt(); /有
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 投標擔保合同
- 2025鋁合金門窗制作合同
- 2025自動化控制系統配件采購合同
- 2025年關于學校食堂餐飲服務外包合同標準版樣本
- 2025年新版《購房合同》曝光內容令人震驚
- 2025年煙花爆竹門面租賃合同模板
- 2025年福建省農產品買賣合同范本
- 2025市場經理聘請合同范本
- 2025年智能設備購銷合同范本
- 2025年北京市存量房屋租賃合同自行成交版
- 人民醫院病房樓裝修改造工程施工組織設計方案
- 創傷性休克患者的護理
- 初中學業水平考試的“一核二融三層四維”命題理論探析
- 數字經濟學試題答案
- 專題13 統計與概率-【好題匯編】五年(2020-2024)高考數學真題分類匯編(含答案解析)
- 國家開放大學本科(非英語專業)學士學位英語統一考試樣題
- GB/T 44273-2024水力發電工程運行管理規范
- 城軌行車課程設計
- 2024年南京市中考歷史試題及答案
- 2024羽毛球教案36課時
- A類供應商績效評價表
評論
0/150
提交評論