下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Visual C+ 編碼規(guī)范1 引言1.1 本文目的隨著越來越多的項(xiàng)目需要Visual C+來編寫,為了便于各位項(xiàng)目經(jīng)理、程序員之前交流項(xiàng)目源程序,并且保證源程序的可讀性,特制定本編程風(fēng)格守則,本文的讀者為項(xiàng)目經(jīng)理、程序員,以期在編碼過程之中,保持一致的風(fēng)格,有利于軟件工程項(xiàng)目的推行。本文在編寫上力求求大同、存小異,在編程風(fēng)格上分為兩類,一類為強(qiáng)制風(fēng)格,意為一定需要遵守,一類為推薦風(fēng)格,意為希望程序員在編碼時(shí)按照這樣的風(fēng)格。1.2 背景在軟件工程領(lǐng)域,源程序的風(fēng)格統(tǒng)一標(biāo)志著可維護(hù)性、可讀性,是軟件項(xiàng)目的一個(gè)重要組成部分。而目前還沒有成文的編碼風(fēng)格文檔,以致于很多時(shí)候,程序員沒有一個(gè)共同的標(biāo)準(zhǔn)可
2、以遵守,編碼風(fēng)格各異,程序可維護(hù)性差、可讀性也很差。目前在編碼上也有許多相關(guān)的風(fēng)格約定,包括匈牙利命名法(一種變量的取名辦法)、類MFC取名方式,但是針對(duì)基于某種編譯器的項(xiàng)目完整編程風(fēng)格守則,目前還是比較少,或者說比較零散。1.3 術(shù)語系統(tǒng):指一個(gè)軟件工程項(xiàng)目,是一個(gè)系統(tǒng);項(xiàng)目:指一個(gè)Visual C+項(xiàng)目;Hungarian naming: MFC:Microsoft Foundation Class Library; 1.4 參考資料MSDN中有關(guān)MFC編寫風(fēng)格的文章,互聯(lián)網(wǎng)上一些有關(guān)編寫風(fēng)格的資料2 概述每位程序員都有自己的編程風(fēng)格,因?yàn)槊课怀绦騿T都有自己的學(xué)習(xí)過程,就象每個(gè)人的個(gè)性一樣
3、,所以編程風(fēng)格是風(fēng)彩各異、百花齊放;而從軟件工程理論、實(shí)踐來看,現(xiàn)代軟件是多人合作的結(jié)晶,編程風(fēng)格是否統(tǒng)一,直接關(guān)系到軟件項(xiàng)目的可讀性、可維護(hù)性、培訓(xùn),繼而對(duì)軟件開發(fā)成本有著直接的關(guān)系,編程風(fēng)格一致,軟件項(xiàng)目易培訓(xùn),其它人員接手老項(xiàng)目的時(shí)間縮短,便于程序員之間的交流。編程風(fēng)格混亂,則其它人員接手老項(xiàng)目時(shí)間增長,同時(shí)隨著項(xiàng)目的不斷開發(fā),項(xiàng)目或者單個(gè)源程序文件內(nèi)有著多種編程風(fēng)格,這樣不利于整個(gè)項(xiàng)目的開展以及程序員之間的交流。本文在參考業(yè)界已有的編碼風(fēng)格的基礎(chǔ)上,描述了一個(gè)基于Visual C+編譯器的項(xiàng)目風(fēng)格,力求一種統(tǒng)一的編程風(fēng)格,并從項(xiàng)目風(fēng)格、代碼文件風(fēng)格、函數(shù)編寫風(fēng)格、變量風(fēng)格、注釋風(fēng)格幾個(gè)
4、方面進(jìn)行闡述。3 項(xiàng)目風(fēng)格項(xiàng)目風(fēng)格指的是針對(duì)整個(gè)項(xiàng)目,包括項(xiàng)目目錄設(shè)置、相關(guān)庫文件設(shè)置、Visual Studio集成環(huán)境設(shè)置等等的習(xí)慣約定。具體有如下風(fēng)格守則:3.1 項(xiàng)目取名在VC之中,項(xiàng)目名為最后可執(zhí)行文件名,所以項(xiàng)目名最好以最終的可執(zhí)行文件名一致。3.2 項(xiàng)目目錄設(shè)置為保證VC項(xiàng)目的備份方便、快捷,可將所有該項(xiàng)目有關(guān)的文件全部放到統(tǒng)一的目錄之下,為每個(gè)項(xiàng)目在該目錄之下建立一個(gè)目錄,項(xiàng)目之間的公共部分建立在public目錄之下,項(xiàng)目所需要的基礎(chǔ)庫根據(jù)所需要的基礎(chǔ)庫數(shù)目分別建立不同的目錄,項(xiàng)目相關(guān)的測(cè)試程序都統(tǒng)一放在TEST目錄之下。下表顯示了一個(gè)軟件工程PSS系統(tǒng)的目錄設(shè)置表:PSS系統(tǒng)
5、簡(jiǎn)介:PSS系統(tǒng)有兩個(gè)模塊PSS_mod1和PSS_mod2,兩個(gè)模塊有一部分共用代碼,在工程開發(fā)過程之中編寫了三個(gè)測(cè)試程序PSS_TEST1、PSS_TEST2、PSS_TEST3,PSS系統(tǒng)開發(fā)過程之中用到了第三方公用模塊Third_Mod,則該系統(tǒng)的目錄設(shè)置如下:一級(jí)目錄二級(jí)目錄三級(jí)目錄備注WORKPSS_mod1DebugVC集成環(huán)境生成的調(diào)試版本目錄ReleaseVC集成環(huán)境生成的發(fā)行版本目錄ResVC集成環(huán)境生成的資源文件目錄Include所屬mod1的頭文件Source所屬mod2的頭文件PSS_mod2DebugVC集成環(huán)境生成的調(diào)試版本目錄ReleaseVC集成環(huán)境生成的發(fā)行
6、版本目錄ResVC集成環(huán)境生成的資源文件目錄Include所屬mod1的頭文件Source所屬mod2的頭文件PUBLICIncludeMod1和mod2公用的頭文件SourceMod1和mod2公用的源代碼文件LibMod1和mod2公用的庫文件TESTPSS_Test1測(cè)試項(xiàng)目一PSS_Test2測(cè)試項(xiàng)目三PSS_Test3測(cè)試項(xiàng)目三Third_Mod第三方公用模塊3.3 集成環(huán)境內(nèi)的項(xiàng)目目錄設(shè)置每個(gè)項(xiàng)目在VC編成編輯環(huán)境的設(shè)置都采用相對(duì)路徑的設(shè)置,不可采用絕對(duì)路徑,保證其備份到光盤設(shè)備后,恢復(fù)到硬盤后,不需要再過多的設(shè)置就可直接編譯。同樣在用#include 語句時(shí)不要太多的目錄搜索,如
7、下所示:#include “./././somehead.h”改成:#include “somehead.h”然后在項(xiàng)目設(shè)置(Project Setting)中加入該頭文件的所在目錄。3.4 集成環(huán)境內(nèi)的模塊劃分在VC項(xiàng)目集成環(huán)境之下,Project視圖中的FileView視圖,對(duì)于每個(gè)項(xiàng)目的子模塊都建立相應(yīng)的文件夾,以對(duì)不同的子模塊進(jìn)行區(qū)分,比如說PSS_mod1就可建立如下幾個(gè)模塊:核心數(shù)據(jù)結(jié)構(gòu)、底層通用平臺(tái)、界面處理模塊、底層工作線程,其中底層通用平臺(tái)又可劃分為CJ60開發(fā)包、RCC通訊平臺(tái)等等。4 文件風(fēng)格4.1 文件生成對(duì)于規(guī)范的VC派生類,盡量用Class Wizard生成文件格式
8、,避免用手工制作的頭文件/實(shí)現(xiàn)文件。 無論是MFC源文件還是由App Wizard生成的文件,會(huì)發(fā)現(xiàn)在這些類中有以下注釋; / Constructors/ Attributes/ Operations/ Overridables/ Implementation每一次類都至少有一個(gè)/Implementation,在不同的位置MFC做不同的處理,在編寫代碼時(shí)最好與MFC這種風(fēng)格一致。 4.2 文件頭部注釋文件頭部注釋主要是表明該文件的一些信息,其格式如下:/ 文件名:/ 創(chuàng)建者:/ 創(chuàng)建時(shí)間:/ 內(nèi)容描述:/4.3 空行約定文件之中不得存在無規(guī)則的空行,比如說連續(xù)十個(gè)空行,一般來講函數(shù)與函數(shù)之前的
9、空行為2-3行,在函數(shù)體內(nèi)部,在邏輯上獨(dú)立的兩個(gè)函數(shù)塊可適當(dāng)空行,一般為1-2行。4.4 文件規(guī)格化功能鍵源文件在編寫完畢時(shí),Visual C+提供Alt+F8功能鍵,進(jìn)行文件規(guī)格化,常使用該按鍵可使得文件保持規(guī)格化(注,Alt+F8功能鍵對(duì)連續(xù)兩個(gè)CASE語句則會(huì)發(fā)生處理錯(cuò)誤,不能規(guī)格化)。5 函數(shù)風(fēng)格5.1 函數(shù)注釋ClassWizard自動(dòng)生成的函數(shù),如消息響應(yīng)函數(shù),則不必太多的注釋和解釋;對(duì)于自行編寫的函數(shù),若是系統(tǒng)關(guān)鍵函數(shù),則必須在函數(shù)實(shí)現(xiàn)部分的上方標(biāo)明該函數(shù)的信息,格式如下:/ 函數(shù)名:/ 編寫者:/ 參考資料:/ 功 能:/ 輸入?yún)?shù):/ 輸出參數(shù):/ 備 注:/5.2 代碼縮進(jìn)
10、每一個(gè)嵌套的函數(shù)塊,使用一個(gè)TAB縮進(jìn)(可以設(shè)定為4個(gè)空格),大括號(hào)必須放在條件語句的下一行,單獨(dú)成一行,便于匹對(duì):if(condition)while(condition)5.3 函數(shù)命名“動(dòng)詞”、“動(dòng)詞+名詞”,如:drawBox()6 變量風(fēng)格變量盡量采用匈牙利命名法,同時(shí)結(jié)合VC的原則;一般情況下,變量的取名方式為:<scope><prefix><qualifier>有關(guān)項(xiàng)目的全局變量必須用g_開始,類成員變量用m_,局部變量若函數(shù)較大則可考慮用l_用以顯示說明其是局部變量。前綴 類型 例子 g_Global Variable g_Servers C
11、Class or structure CDocument, CPrintInfo m_Member variable m_pDoc, m_nCustomers Visual C+常用前綴列表:前綴 類型 描述 例子 chchar8-bit character chGrade chTCHAR16-bit character if _UNICODE is defined chName bBOOLBoolean value bEnabled nintInteger (size dependent on operating system) nLength nUINTUnsigned value (si
12、ze dependent on operating system) nLength wWORD16-bit unsigned value wPos lLONG32-bit signed integer lOffset dwDWORD32-bit unsigned integer dwRange p*Ambient memory model pointer pDoc lpFAR*Far pointer lpDoc lpszLPSTR32-bit pointer to character string lpszName lpszLPCSTR32-bit pointer to constant ch
13、aracter string lpszName lpszLPCTSTR32-bit pointer to constant character string if _UNICODE is defined lpszName hhandleHandle to Windows object hWnd lpfn(*fn)()callbackFar pointer to CALLBACK function lpfnAbort Windows對(duì)象名稱縮寫:Windows 對(duì)象 例子變量 MFC類 例子對(duì)象 HWNDhWnd;CWnd*pWnd;HDLGhDlg;CDialog*pDlg;HDChDC;CD
14、C*pDC;HGDIOBJhGdiObj;CGdiObject*pGdiObj;HPENhPen;CPen*pPen;HBRUSHhBrush;CBrush*pBrush;HFONThFont;CFont*pFont;HBITMAPhBitmap;CBitmap*pBitmap;HPALETTEhPalette;CPalette*pPalette;HRGNhRgn;CRgn*pRgn;HMENUhMenu;CMenu*pMenu;HWNDhCtl;CStatic*pStatic;HWNDhCtl;CButton*pBtn;HWNDhCtl;CEdit*pEdit;HWNDhCtl;CListB
15、ox*pListBox;HWNDhCtl;CComboBox*pComboBox;Visual C+常用宏定義命名列表:前綴 符號(hào)類型 符號(hào)例子 范圍 IDR_ 標(biāo)識(shí)多個(gè)資源共享的類型 IDR_MAINFRAME 1 to 0x6FFF IDD_ 對(duì)話框資源(Dialog) IDD_SPELL_CHECK 1 to 0x6FFF HIDD_ 基于對(duì)話框的上下文幫助(Context Help) HIDD_SPELL_CHECK 0x20001 to 0x26FF IDB_ 位圖資源(Bitmap) IDB_COMPANY_LOGO 1 to 0x6FFF IDC_ 光標(biāo)資源(Cursor) IDC_PENCIL 1 to 0x6FFF IDI_ 圖標(biāo)資源(Icon) IDI_NOTEPAD 1 to 0x6FFF ID_ IDM_ 工具欄或菜單欄的命令項(xiàng) ID_TOOLS_SPELLING 0x8000 to 0xDFFF HID_ 命令上下文幫助(Command Help context) HID_TOOLS_SPELLING 0x18000 to 0x1DFFF IDP_ 消息框提示文字資源 IDP_INVALID_PARTNO 8 to 0xDFFF HIDP_ 消息框上下文幫助(Message-box Help cont
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 15268-2024桑蠶鮮繭
- 2024年資產(chǎn)評(píng)估和法律盡職調(diào)查3篇
- 森林公園綠化養(yǎng)護(hù)服務(wù)協(xié)議
- 墻面翻新簡(jiǎn)易施工合同
- 巖土建設(shè)改建爆破作業(yè)安全規(guī)則
- 軟件實(shí)施技師規(guī)范
- 電信服務(wù)干部管理準(zhǔn)則
- 城市供熱工程塔吊施工協(xié)議
- 科研設(shè)備招投標(biāo)管理工作辦法
- 珠寶典當(dāng)聯(lián)營合同
- 專題06手拉手模型(原卷版+解析)
- HY/T 0273.2-2023海洋災(zāi)害風(fēng)險(xiǎn)評(píng)估和區(qū)劃技術(shù)導(dǎo)則第2部分:海浪
- Pep小學(xué)英語六年級(jí)上冊(cè)教案-全冊(cè)
- 北師大版二年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)10套試卷(附答案)
- GB/T 2423.17-2024環(huán)境試驗(yàn)第2部分:試驗(yàn)方法試驗(yàn)Ka:鹽霧
- 2024-2030年中國抹茶行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- GB/T 32399-2024信息技術(shù)云計(jì)算參考架構(gòu)
- 宮腔鏡手術(shù)并發(fā)癥及處理
- 安全生產(chǎn)治本攻堅(jiān)三年行動(dòng)方案2024~2026(工貿(mào))
- 重慶市2024年高三年級(jí)高考一模化學(xué)試題(含答案)
- 2024版內(nèi)蒙古自治區(qū)勞動(dòng)合同書(臨時(shí)工、季節(jié)工、農(nóng)民輪換工)
評(píng)論
0/150
提交評(píng)論