一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

摘:VC編碼規(guī)范 - HellKing

 firedragon 2006-01-09
摘:VC編碼規(guī)范

1    項目風格

   1.1    項目取名

     在VC之中,項目名為最后可執(zhí)行文件名,所以項目名最好以最終的可執(zhí)行文件名一致。

   1.2    項目目錄設(shè)置

     為保證VC項目的備份方便、快捷,將所有該項目有關(guān)的文件全部放到統(tǒng)一的目錄之下,為每個項目在該目錄之下建立一個目錄,項目之間的公共部分建立在public目錄之下,項目所需要的基礎(chǔ)庫根據(jù)所需要的基礎(chǔ)庫數(shù)目分別建立不同的目錄,項目相關(guān)的測試程序都統(tǒng)一放在TEST目錄之下。下表顯示了一個軟件工程PSS系統(tǒng)的目錄設(shè)置表:

      PSS系統(tǒng)有兩個模塊PSS_mod1PSS_mod2,兩個模塊有一部分共用代碼,在工程開發(fā)過程之中編寫了三個測試程序PSS_TEST1、       PSS_TEST2、PSS_TEST3PSS系統(tǒng)開發(fā)過程之中用到了第三方公用模塊Third_Mod,則該系統(tǒng)的目錄設(shè)置如下:

         一級目錄

        二級目錄

        三級目錄

        備注

        WORK

        PSS_mod1

        Debug

        VC集成環(huán)境生成的調(diào)試版本目錄

        Release

        VC集成環(huán)境生成的發(fā)行版本目錄

        Res

        VC集成環(huán)境生成的資源文件目錄

        Include

        所屬mod1的頭文件

        Source

        所屬mod2的頭文件

        PSS_mod2

        Debug

        VC集成環(huán)境生成的調(diào)試版本目錄

        Release

        VC集成環(huán)境生成的發(fā)行版本目錄

        Res

        VC集成環(huán)境生成的資源文件目錄

        Include

        所屬mod1的頭文件

        Source

        所屬mod2的頭文件

        PUBLIC

        Include

        Mod1mod2公用的頭文件

        Source

        Mod1mod2公用的源代碼文件

        Lib

        Mod1mod2公用的庫文件

        TEST

        PSS_Test1

        測試項目一

        PSS_Test2

        測試項目三

        PSS_Test3

        測試項目三

        Third_Mod

        第三方公用模塊

         

   1.3    集成環(huán)境內(nèi)的項目目錄設(shè)置

       每個項目在VC編成編輯環(huán)境的設(shè)置都采用相對路徑的設(shè)置,不可采用絕對路徑,保證其備份到光盤設(shè)備后或恢復(fù)到硬盤時, 不需要再過多的設(shè)置就可直接編譯。同樣在用#include 語句時不要太多的目錄搜索,如下所示:

            #include “../../../somehead.h”

            改成:

            #include "headfile.h"

            或#incldue "dir/headfile.h"

            并注意#include "headfile.h"與#include <headfile.h>的區(qū)別

            然后在項目設(shè)置(Project Setting)中加入該頭文件的所在目錄。

     

   1.4    項目修改記錄追蹤

       每一個VC項目必須存在Changes.Log,用以記載項目產(chǎn)生以來所有的改動,其格式必須如下:

      日期:          2000/4/28

      修改人:       **

      修改主題:       

      相關(guān)修改文件: hello.cpp

      修改內(nèi)容詳細描述:

      另外可充分利用Visual C++自動生成的Readme.txt文件來記載項目相關(guān)的信息。 

       

2     文件風格

    2.1    文件生成

            文件名的語義應(yīng)該能概括表達本文件所包含函數(shù)主要實現(xiàn)什么功能。文件名用小寫英文字母表達,嚴禁使用中文;對于幾個單詞組合表達的文件名,單詞之間用_符號分開。

      文件名的后綴定義:

                a. VC自動生成的源文件和頭文件后綴分別為:*.cpp和.h。
                 b. 其他源文件和頭文件后綴分別為:*.cxx和*.hxx。

       對于規(guī)范的VC派生類,盡量用Class Wizard生成文件格式,避免用手工制作頭文件/實現(xiàn)文件。

      // Constructors //構(gòu)造
       
      // Attributes //屬性, 品質(zhì), 特征, 加于, 歸結(jié)
       
      // Operations //運轉(zhuǎn), 操作, 實施, 作用, 業(yè)務(wù), 工作, 手術(shù), 軍事行動
       
      // Overridables //可重載的
       
      // Implementation //實現(xiàn)

       每一次類都至少有一個//Implementation,在不同的位置MFC做不同的處理,在編寫代碼時最好

       與MFC這種風格一致。

    2.2    文件頭部注釋

        文件頭部注釋主要是表明該文件的一些信息,其格式如下:

        ///////////////////////////////////////////////////////////////////
        // 文件名                       :      mange_fun.cxx
        // 版本                           :                            
        // 目的及主要功            :     系統(tǒng)參數(shù)的設(shè)定
        // 創(chuàng)建日期                   :     1999.09.14
        // 修改日期                   :                     
        // 作者                           :              ***
        // 修改者                       :                         
        ////////////////////////////////////////////////////////////////

    2.3    文件規(guī)格化功能鍵

     源文件在編寫完畢時,Visual C++提供Alt+F8功能鍵,進行文件規(guī)格化,常使用該按鍵可使得文件保持規(guī)格化(注,Alt+F8功能鍵對連續(xù)兩個CASE語句則會發(fā)生處理錯誤,不能規(guī)格化)。 

 

3      函數(shù)風格

  3.1   函數(shù)名的約定。

    函數(shù)名的語義應(yīng)該能反映函數(shù)實現(xiàn)的功能。

    對于api函數(shù)的命名規(guī)則為:
        a. 函數(shù)一律以api_lm_開頭;lm表示此函數(shù)為lonicera-mda子系統(tǒng)的函數(shù), pdm模塊的函數(shù)名以api_lp_開頭。
        b. 后面的命名以函數(shù)語義為基準,如創(chuàng)建一點的函數(shù)完整的函數(shù)名為api_lm_ceate_point()。

    對于DI函數(shù)的命名規(guī)則:
        a. 函數(shù)名=lm_+(函數(shù)語義)。
        b. 對于幾個單詞組合表達的函數(shù)名,各單詞之間以_符號分開。

 3.2    函數(shù)注釋

    ClassWizard自動生成的函數(shù),如消息響應(yīng)函數(shù),則不必太多的注釋和解釋;

    對于自行編寫的函數(shù),若是系統(tǒng)關(guān)鍵函數(shù),則須在函數(shù)實現(xiàn)部分的上方標明該函數(shù)的信息,格式如下:

      //======================================================================
      // 函 數(shù) 名:InsureHasOutputInfo
      // 功能描述:確保有適當?shù)妮敵鲂畔?BR>// 輸入?yún)?shù):nProductID:相應(yīng)的產(chǎn)品ID
      // 輸出參數(shù):void
      // 創(chuàng)建日期:00-2-21
      // 修改日期:00-2-21
      // 作      者:***
      // 附加說明:
      //======================================================================

 3.3    代碼縮進

    每一個嵌套的函數(shù)塊,使用一個TAB縮進(可以設(shè)定為3個空格),大括號必須放在條件語句的下一行,單獨成一行,便于匹對反大括號應(yīng)該在單獨的一行,在大多數(shù)情況下反擴號應(yīng)有注釋內(nèi)容。舉例如下:

        if(condition1)
        {
           while(condition2)
           {
              …..
              …..
           }//end while(condition2)
        }//end if (condition1)

        或者

        if(condition1){
           while(condition2){
              ….
              ….
           }//end while(condition2)
        }//end if(conditionl)

 3 .4   其它規(guī)范

      1、 每個源文件包括的函數(shù)體不應(yīng)該多于20個,每個函數(shù)體不應(yīng)該超過120行原代碼。
      2、 函數(shù)的輸入?yún)?shù)不多于5個,輸出參數(shù)不多于5個。
      3、 對于超過3句以上的語句反復(fù)調(diào)用,應(yīng)封裝為函數(shù)調(diào)用。
      4、 盡量避免三層以上的嵌套循環(huán) ;盡量減少程序的 if語句;少用諸如I*=b、A=C+D*B++等語義難懂的語句。
      5、 充分利用C++的思想,真正意義上地用C++語言編程;對類擴充成員函數(shù)。

 

4       變量風格

       變量盡量采用匈牙利命名法,同時結(jié)合VC的原則;一般情況下,變量的取名方式為:

      <scope_> + <prefix_> + <qualifier>。
      范圍前綴_,類型前綴_,限定詞。

      特殊的類型命名,前綴表示:

      類、接口

      前綴

      類型

      例子

      備注

      Lm

      Class   

      LmObject

      表示類型本身
      不與范圍前綴結(jié)合使用

      I

      Interface 接口

      IUnknown

       

        :類名前綴改為Lm,對于非全局的類最好有語義表示其所屬模塊。類的實例命名與類名大致相同,只是類名語義表示類的通用含義,而類名表示此實例的具體語義。如類名LmSketPoint表示草圖點的類定義,而它的兩個實例 _StartPoint,_EndPoint分別代表起點和終點的語義。類的實例命名帶上前綴_。
               特殊約定:
               a. MouseTool的派生類的前綴為_Mt.
               b. 對話框類的前綴為CDlg.
               c. 橡皮條類的前綴為_Rb.

      范圍前綴:

      前綴

      類型

      例子

      備注

      g_

      全局作用域

      g_Servers

      m_

      成員變量

      m_pDoc,

      l_

      局部作用域

      l_strName

      少用

       

       

           :編程時盡量少用全程變量,對于全程變量還應(yīng)在類型前綴后加上如下關(guān)鍵字:

                  特征模塊   :    Fea
                  草圖模塊   :    Sket
                  裝配模塊   :    Asm
                  工程圖模塊 :    Lay
                  曲面模塊   :    Surf
                  界面模塊   :    Ui

       

      類型前綴 1、:

      常用的一般數(shù)據(jù)類型的前綴表示(這只是一部分)

      前綴

      類型

      內(nèi)存規(guī)格描述

      例子

      ch

      char

      8-bit character

      chGrade

      ch

      TCHAR

      16-bit character if _UNICODE is defined

      chName

      b

      BOOL

      Boolean value

      bEnabled

      n

      int

      Integer (size dependent on operating system)

      nLength

      n

      UINT

      Unsigned value (size dependent on operating system)

      nLength

      w

      WORD

      16-bit unsigned value

      wPos

      l

      LONG

      32-bit signed integer

      lOffset

      dw

      DWORD

      32-bit unsigned integer

      dwRange

      p

      *

      Ambient memory model pointer

      pDoc

      lp

      FAR*

      Far pointer

      lpDoc

      lpsz

      LPSTR

      32-bit pointer to character string

      lpszName

      lpsz

      LPCSTR

      32-bit pointer to constant character string

      lpszName

      lpsz

      LPCTSTR

      32-bit pointer to constant character string if _UNICODE is defined

      lpszName

      h

      handle

      Handle to Windows object

      hWnd

      lpfn

      (*fn)()

      callbackFar pointer to CALLBACK function

      lpfnAbort


    常用Windows對象名稱縮寫:

    這些名稱縮寫很多情況下可直接使用,直接作變量的名稱。

    Windows 對象  例子變量 

    HWND hWnd;

    HDLG  hDlg;

    HDC  hDC;

    HGDIOBJ hGDIOBJ



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=571377

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲a码一区二区三区| 九九蜜桃视频香蕉视频| 色综合视频一区二区观看| 亚洲欧美日韩精品永久| 欧美美女视频在线免费看| 国产成人精品一区二区三区| 视频一区二区 国产精品| 亚洲精品国产福利在线| 99久久精品午夜一区二区| 老鸭窝老鸭窝一区二区| 日韩一区二区三区观看| 日韩毛片视频免费观看| 久久亚洲精品中文字幕| 欧美日韩精品一区二区三区不卡| 欧美一区二区三区性视频| 91人妻人人澡人人人人精品| 久久国产精品熟女一区二区三区| 日本特黄特色大片免费观看| 国产精品免费视频视频| 欧美性欧美一区二区三区| 九九蜜桃视频香蕉视频| 欧美精品一区二区三区白虎| 暴力三级a特黄在线观看| 国产亚洲欧美日韩精品一区| 亚洲内射人妻一区二区| 青青免费操手机在线视频| 人妻亚洲一区二区三区| 黄片在线观看一区二区三区| 少妇肥臀一区二区三区| 久久热麻豆国产精品视频| 国产成人国产精品国产三级| 清纯少妇被捅到高潮免费观看| 中文字幕一区二区熟女| 91国自产精品中文字幕亚洲| 亚洲欧美日韩国产成人| 东京干男人都知道的天堂| 久草视频在线视频在线观看| 国产av大片一区二区三区| 在线懂色一区二区三区精品| 久久这里只精品免费福利| 又黄又爽禁片视频在线观看|