




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Visual C+ 編碼規(guī)范1 引言1.1 本文目的隨著越來越多的項目需要Visual C+來編寫,為了便于各位項目經理、程序員之前交流項目源程序,并且保證源程序的可讀性,特制定本編程風格守則,本文的讀者為項目經理、程序員,以期在編碼過程之中,保持一致的風格,有利于軟件工程項目的推行。本文在編寫上力求求大同、存小異,在編程風格上分為兩類,一類為強制風格,意為一定需要遵守,一類為推薦風格,意為希望程序員在編碼時按照這樣的風格。1.2 背景在軟件工程領域,源程序的風格統(tǒng)一標志著可維護性、可讀性,是軟件項目的一個重要組成部分。而目前還沒有成文的編碼風格文檔,以致于很多時候,程序員沒有一個共同的標準可
2、以遵守,編碼風格各異,程序可維護性差、可讀性也很差。目前在編碼上也有許多相關的風格約定,包括匈牙利命名法(一種變量的取名辦法)、類MFC取名方式,但是針對基于某種編譯器的項目完整編程風格守則,目前還是比較少,或者說比較零散。1.3 術語系統(tǒng):指一個軟件工程項目,是一個系統(tǒng);項目:指一個Visual C+項目;Hungarian naming: MFC:Microsoft Foundation Class Library; 1.4 參考資料MSDN中有關MFC編寫風格的文章,互聯網上一些有關編寫風格的資料2 概述每位程序員都有自己的編程風格,因為每位程序員都有自己的學習過程,就象每個人的個性一樣
3、,所以編程風格是風彩各異、百花齊放;而從軟件工程理論、實踐來看,現代軟件是多人合作的結晶,編程風格是否統(tǒng)一,直接關系到軟件項目的可讀性、可維護性、培訓,繼而對軟件開發(fā)成本有著直接的關系,編程風格一致,軟件項目易培訓,其它人員接手老項目的時間縮短,便于程序員之間的交流。編程風格混亂,則其它人員接手老項目時間增長,同時隨著項目的不斷開發(fā),項目或者單個源程序文件內有著多種編程風格,這樣不利于整個項目的開展以及程序員之間的交流。本文在參考業(yè)界已有的編碼風格的基礎上,描述了一個基于Visual C+編譯器的項目風格,力求一種統(tǒng)一的編程風格,并從項目風格、代碼文件風格、函數編寫風格、變量風格、注釋風格幾個
4、方面進行闡述。3 項目風格項目風格指的是針對整個項目,包括項目目錄設置、相關庫文件設置、Visual Studio集成環(huán)境設置等等的習慣約定。具體有如下風格守則:3.1 項目取名在VC之中,項目名為最后可執(zhí)行文件名,所以項目名最好以最終的可執(zhí)行文件名一致。3.2 項目目錄設置為保證VC項目的備份方便、快捷,可將所有該項目有關的文件全部放到統(tǒng)一的目錄之下,為每個項目在該目錄之下建立一個目錄,項目之間的公共部分建立在public目錄之下,項目所需要的基礎庫根據所需要的基礎庫數目分別建立不同的目錄,項目相關的測試程序都統(tǒng)一放在TEST目錄之下。下表顯示了一個軟件工程PSS系統(tǒng)的目錄設置表:PSS系統(tǒng)
5、簡介:PSS系統(tǒng)有兩個模塊PSS_mod1和PSS_mod2,兩個模塊有一部分共用代碼,在工程開發(fā)過程之中編寫了三個測試程序PSS_TEST1、PSS_TEST2、PSS_TEST3,PSS系統(tǒng)開發(fā)過程之中用到了第三方公用模塊Third_Mod,則該系統(tǒng)的目錄設置如下:一級目錄二級目錄三級目錄備注WORKPSS_mod1DebugVC集成環(huán)境生成的調試版本目錄ReleaseVC集成環(huán)境生成的發(fā)行版本目錄ResVC集成環(huán)境生成的資源文件目錄Include所屬mod1的頭文件Source所屬mod2的頭文件PSS_mod2DebugVC集成環(huán)境生成的調試版本目錄ReleaseVC集成環(huán)境生成的發(fā)行
6、版本目錄ResVC集成環(huán)境生成的資源文件目錄Include所屬mod1的頭文件Source所屬mod2的頭文件PUBLICIncludeMod1和mod2公用的頭文件SourceMod1和mod2公用的源代碼文件LibMod1和mod2公用的庫文件TESTPSS_Test1測試項目一PSS_Test2測試項目三PSS_Test3測試項目三Third_Mod第三方公用模塊3.3 集成環(huán)境內的項目目錄設置每個項目在VC編成編輯環(huán)境的設置都采用相對路徑的設置,不可采用絕對路徑,保證其備份到光盤設備后,恢復到硬盤后,不需要再過多的設置就可直接編譯。同樣在用#include 語句時不要太多的目錄搜索,如
7、下所示:#include “./././somehead.h”改成:#include “somehead.h”然后在項目設置(Project Setting)中加入該頭文件的所在目錄。3.4 集成環(huán)境內的模塊劃分在VC項目集成環(huán)境之下,Project視圖中的FileView視圖,對于每個項目的子模塊都建立相應的文件夾,以對不同的子模塊進行區(qū)分,比如說PSS_mod1就可建立如下幾個模塊:核心數據結構、底層通用平臺、界面處理模塊、底層工作線程,其中底層通用平臺又可劃分為CJ60開發(fā)包、RCC通訊平臺等等。4 文件風格4.1 文件生成對于規(guī)范的VC派生類,盡量用Class Wizard生成文件格式
8、,避免用手工制作的頭文件/實現文件。 無論是MFC源文件還是由App Wizard生成的文件,會發(fā)現在這些類中有以下注釋; / Constructors/ Attributes/ Operations/ Overridables/ Implementation每一次類都至少有一個/Implementation,在不同的位置MFC做不同的處理,在編寫代碼時最好與MFC這種風格一致。 4.2 文件頭部注釋文件頭部注釋主要是表明該文件的一些信息,其格式如下:/ 文件名:/ 創(chuàng)建者:/ 創(chuàng)建時間:/ 內容描述:/4.3 空行約定文件之中不得存在無規(guī)則的空行,比如說連續(xù)十個空行,一般來講函數與函數之前的
9、空行為2-3行,在函數體內部,在邏輯上獨立的兩個函數塊可適當空行,一般為1-2行。4.4 文件規(guī)格化功能鍵源文件在編寫完畢時,Visual C+提供Alt+F8功能鍵,進行文件規(guī)格化,常使用該按鍵可使得文件保持規(guī)格化(注,Alt+F8功能鍵對連續(xù)兩個CASE語句則會發(fā)生處理錯誤,不能規(guī)格化)。5 函數風格5.1 函數注釋ClassWizard自動生成的函數,如消息響應函數,則不必太多的注釋和解釋;對于自行編寫的函數,若是系統(tǒng)關鍵函數,則必須在函數實現部分的上方標明該函數的信息,格式如下:/ 函數名:/ 編寫者:/ 參考資料:/ 功 能:/ 輸入參數:/ 輸出參數:/ 備 注:/5.2 代碼縮進
10、每一個嵌套的函數塊,使用一個TAB縮進(可以設定為4個空格),大括號必須放在條件語句的下一行,單獨成一行,便于匹對:if(condition)while(condition)5.3 函數命名“動詞”、“動詞+名詞”,如:drawBox()6 變量風格變量盡量采用匈牙利命名法,同時結合VC的原則;一般情況下,變量的取名方式為:<scope><prefix><qualifier>有關項目的全局變量必須用g_開始,類成員變量用m_,局部變量若函數較大則可考慮用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對象名稱縮寫:Windows 對象 例子變量 MFC類 例子對象 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+常用宏定義命名列表:前綴 符號類型 符號例子 范圍 IDR_ 標識多個資源共享的類型 IDR_MAINFRAME 1 to 0x6FFF IDD_ 對話框資源(Dialog) IDD_SPELL_CHECK 1 to 0x6FFF HIDD_ 基于對話框的上下文幫助(Context Help) HIDD_SPELL_CHECK 0x20001 to 0x26FF IDB_ 位圖資源(Bitmap) IDB_COMPANY_LOGO 1 to 0x6FFF IDC_ 光標資源(Cursor) IDC_PENCIL 1 to 0x6FFF IDI_ 圖標資源(Icon) IDI_NOTEPAD 1 to 0x6FFF ID_ IDM_ 工具欄或菜單欄的命令項 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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基金公司產品管理辦法
- 冰箱裝修知識培訓課件
- 腸道健康學術課件
- 肝膽脾胃科護理課件
- 福清畢業(yè)考數學試卷
- 肝病中醫(yī)教學課件
- 肛裂中醫(yī)課件
- 高處作業(yè)培訓課件
- 東城三年級期中數學試卷
- 東莞高二聯考數學試卷
- 遇見未知的自己-讀書分享課件
- 01S201室外消火栓安裝圖集
- 租船運輸實務與法律航次租船合同
- 古詩詞九宮格題目課件
- 保險行業(yè)管理會計sap方案
- 銀鉛鋅礦開采項目可行性研究報告
- 甲狀腺癌的圍手術期護理
- 中醫(yī)外科醫(yī)生面試問題及答案
- 硝酸銀安全技術說明書MSDS
- 2023年副主任醫(yī)師(副高)-結核病學(副高)考試歷年高頻考點試題摘選附帶含答案
- 服裝設計畢業(yè)論文-范本4
評論
0/150
提交評論