青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

唐吉訶德

  C++博客 :: 首頁 :: 聯系 :: 聚合  :: 管理
  5 Posts :: 75 Stories :: 3 Comments :: 0 Trackbacks

常用鏈接

留言簿(2)

我參與的團隊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

一、程序風格:    
    1、嚴格采用階梯層次組織程序代碼:    
    各層次縮進的分格采用VC的缺省風格,即每層次縮進為4格,括號位于下一行。要求相匹配的大括號在同一列,對繼行則要求再縮進4格。例如:    
    2、提示信息字符串的位置    
    在程序中需要給出的提示字符串,為了支持多種語言的開發,除了一些給調試用的臨時信息外,其他所有的提示信息必須定義在資源中。    
    3、對變量的定義,盡量位于函數的開始位置。    

二、命名規則:    
    1、變量名的命名規則    
    ①、變量的命名規則要求用“匈牙利法則”。即開頭字母用變量的類型,其余部分用變量的英文意思或其英文意思的縮寫,盡量避免用中文的拼音,要求單詞的第一個字母應大寫。    
    即:     變量名=變量類型+變量的英文意思(或縮寫)    
    對非通用的變量,在定義時加入注釋說明,變量定義盡量可能放在函數的開始處。    
    見下表:    
    bool(BOOL)     用b開頭     bIsParent    
    byte(BYTE)     用by開頭     byFlag    
    short(int)     用n開頭     nStepCount    
    long(LONG)     用l開頭     lSum    
    char(CHAR)     用c開頭     cCount    
    float(FLOAT)     用f開頭     fAvg    
    double(DOUBLE)     用d開頭     dDeta    
    void(VOID)     用v開頭     vVariant    
    unsigned     int(WORD)     用w開頭     wCount    
    unsigned     long(DWORD)     用dw開頭     dwBroad    
    HANDLE(HINSTANCE)     用h開頭     hHandle    
    DWORD     用dw開頭     dwWord    
    LPCSTR(LPCTSTR)     用str開頭     strString    
    用0結尾的字符串     用sz開頭     szFileName
    
   
    對未給出的變量類型要求提出并給出命名建議給技術委員會。    
   
    ②、指針變量命名的基本原則為:    
    對一重指針變量的基本原則為:    
    “p”+變量類型前綴+命名    
    如一個float*型應該表示為pfStat    
    對多重指針變量的基本規則為:    
    二重指針:     “pp”+變量類型前綴+命名    
    三重指針:     “ppp”+變量類型前綴+命名    
    ......    
    ③、全局變量用g_開頭,如一個全局的長型變量定義為g_lFailCount,即:變量名=g_+變量類型+變量的英文意思(或縮寫)    
    ④、靜態變量用s_開頭,如一個靜態的指針變量定義為s_plPerv_Inst,即:     變量名=s_+變量類型+變量的英文意思(或縮寫)    
    ⑤、成員變量用m_開頭,如一個長型成員變量定義為m_lCount;即:變量名=m_+變量類型+變量的英文意思(或縮寫)    
    ⑥、對枚舉類型(enum)中的變量,要求用枚舉變量或其縮寫做前綴。并且要求用大寫。    
    如:enum     cmEMDAYS    
    {    
    EMDAYS_MONDAY;    
    EMDAYS_TUESDAY;    
    ……    
    };
    
    ⑦、對struct、union、class變量的命名要求定義的類型用大寫。并要加上前綴,其內部變量的命名規則與變量命名規則一致。    
    結構一般用S開頭    
    如:struct     ScmNPoint    
    {    
    int     nX;//點的X位置    
    int     nY;     //點的Y位置    
    };
    
    聯合體一般用U開頭    
    如:     union     UcmLPoint    
    {    
    long     lX;    
    long     lY;    
    }  
  
    類一般用C開頭    
    如:    
    class     CcmFPoint    
    {    
    public:    
    float     fPoint;    
    };    
    對一般的結構應該定義為類模板,為以后的擴展性考慮    
    如:    
    template    
    class     CcmTVector3d    
    {    
    public:    
    TYPE     x,y,z;    
    };    
    ⑧、對常量(包括錯誤的編碼)命名,要求常量名用大寫,常量名用英文表達其意思。    
    如:#define     CM_FILE_NOT_FOUND     CMMAKEHR(0X20B)     其中CM表示類別。    
    ⑨、對const     的變量要求在變量的命名規則前加入c_,即:c_+變量命名規則;例如:    
    const     char*     c_szFileName;    
    2、     函數的命名規范:    
    函數的命名應該盡量用英文表達出函數完成的功能。遵循動賓結構的命名法則,函數名中動詞在前,并在命名前加入函數的前綴,函數名的長度不得少于8個字母。    
    例如:    
    long     cmGetDeviceCount(……);    
    3、函數參數規范:    
    ①、     參數名稱的命名參照變量命名規范。    
    ②、     為了提高程序的運行效率,減少參數占用的堆棧,傳遞大結構的參數,一律采用指針或引用方式傳遞。    
    ③、     為了便于其他程序員識別某個指針參數是入口參數還是出口參數,同時便于編譯器檢查錯誤,應該在入口參數前加入const標志。如:    
    ……cmCopyString(const     char     *     c_szSource,     char     *     szDest)    
    4、引出函數規范:    
    對于從動態庫引出作為二次開發函數公開的函數,為了能與其他函數以及Windows的函數區分,采用類別前綴+基本命名規則的方法命名。例如:在對動態庫中引出的一個圖象編輯的函數定義為     imgFunctionname(其中img為image縮寫)。    
    現給出三種庫的命名前綴:    
    ①、     對通用函數庫,采用cm為前綴。    
    ②、     對三維函數庫,采用vr為前綴。    
    ③、     對圖象函數庫,采用img為前綴。
    
    對宏定義,結果代碼用同樣的前綴。    
    5、文件名(包括動態庫、組件、控件、工程文件等)的命名規范:    
    文件名的命名要求表達出文件的內容,要求文件名的長度不得少于5個字母,嚴禁使用象file1,myfile之類的文件名。    

三、注釋規范:    
    1、函數頭的注釋    
    對于函數,應該從“功能”,“參數”,“返回值”、“主要思路”、“調用方法”、“日期”六個方面用如下格式注釋:    
    //程序說明開始    
    //================================================================//    
    //     功能:     從一個String     中刪除另一個String。    
    //     參數:     strByDelete,strToDelete    
    //     (入口)     strByDelete:     被刪除的字符串(原來的字符串)    
    //     (出口)     strToDelete:     要從上個字符串中刪除的字符串。    
    //     返回:     找到并刪除返回1,否則返回0。(對返回值有錯誤編碼的要//     求列出錯誤編碼)。    
    //     主要思路:本算法主要采用循環比較的方法來從strByDelete中找到    
    //     與strToDelete相匹配的字符串,對多匹配strByDelete    
    //     中有多個strToDelete子串)的情況沒有處理。請參閱:    
    //     書名......    
    //     調用方法:......    
    //     日期:起始日期,如:2000/8/21.9:40--2000/8/23.21:45    
    //================================================================//    
    函數名(……)    
    //程序說明結束    
    ①、     對于某些函數,其部分參數為傳入值,而部分參數為傳出值,所以對參數要詳細說明該參數是入口參數,還是出口參數,對于某些意義不明確的參數還要做詳細說明(例如:以角度作為參數時,要說明該角度參數是以弧度(PI),還是以度為單位),對既是入口又是出口的變量應該在入口和出口處同時標明。等等。    
    ②、     函數的注釋應該放置在函數的頭文件中,在實現文件中的該函數的實現部分應該同時放置該注釋。    
    ③、     在注釋中應該詳細說明函數的主要實現思路、特別要注明自己的一些想法,如果有必要則應該寫明對想法產生的來由。對一些模仿的函數應該注釋上函數的出處。    
    ④、     在注釋中詳細注明函數的適當調用方法,對于返回值的處理方法等。在注釋中要強調調用時的危險方面,可能出錯的地方。    
    ⑤、     對日期的注釋要求記錄從開始寫函數到結束函數的測試之間的日期。    
    ⑥、     對函數注釋開始到函數命名之間應該有一組用來標識的特殊字符串。    
    如果算法比較復雜,或算法中的變量定義與位置有關,則要求對變量的定義進行圖解。對難以理解的算法能圖解盡量圖解。    
    2、變量的注釋:    
    對于變量的注釋緊跟在變量的后面說明變量的作用。原則上對于每個變量應該注釋,但對于意義非常明顯的變量,如:i,j等循環變量可以不注釋。    
    例如:     long     lLineCount     //線的根數。    
     3、文件的注釋:    
    文件應該在文件開頭加入以下注釋:    
    /////////////////////////////////////////////////////////////////////    
    //     工程:     文件所在的項目名。    
    //     作者:**,修改者:**    
    //     描述:說明文件的功能。    
    //     主要函數:…………    
    //     版本:     說明文件的版本,完成日期。    
    //     修改:     說明對文件的修改內容、修改原因以及修改日期。    
    //     參考文獻:     ......    
    /////////////////////////////////////////////////////////////////////    
    為了頭文件被重復包含要求對頭文件進行定義如下:    
    #ifndef     __FILENAME_H__    
    #define     __FILENAME_H__
    
    其中FILENAME為頭文件的名字。    
       4、其他注釋:    
    在函數內我們不需要注釋每一行語句。但必須在各功能模塊的每一主要部分之前添加塊注釋,注釋每一組語句,在循環、流程的各分支等,盡可能多加以注釋。    
    其中的循環、條件、選擇等位置必須注釋。    
    對于前后順序不能顛倒的情況,建議在注釋中增加序號。    
    例如:    
    在其他順序執行的程序中,每隔3—5行語句,必須加一個注釋,注明這一段語句所組成的小模塊的作用。對于自己的一些比較獨特的思想要求在注釋中標明。    

四、程序健壯性:    
    1、函數的返回值規范:    
    對于函數的返回位置,盡量保持單一性,即一個函數盡量做到只有一個返回位置。(單入口單出口)。    
    要求大家統一函數的返回值,所有的函數的返回值都將以編碼的方式返回。    
    例如編碼定義如下:    
    #define     CM_POINT_IS_NULL     CMMAKEHR(0X200)    
    :    
    :    
    建議函數實現如下:    
    long     函數名(參數,……)    
    {    
    long     lResult;     //保持錯誤號    
    lResult=CM_OK;
    
    //如果參數有錯誤則返回錯誤號    
    if(參數==NULL)    
    {    
    lResult=CM_POINT_IS_NULL;    
    goto     END;    
    }    
    ……    
    END:    
    return     lResult;    
    }
    
    2、關于goto的應用:    
    對goto語句的應用,我們要求盡量少用goto語句。對一定要用的地方要求只能向后轉移。    
    3、資源變量的處理(資源變量是指消耗系統資源的變量):    
    對資源變量一定賦初值。分配的資源在用完后必須馬上釋放,并重新賦值。    
    4、對復雜的條件判斷,為了程序的可讀性,應該盡量使用括號。    
    例:if(((szFileName!=NULL)&&(lCount>=0)))||(bIsRead==TRUE))    
 
五、可移植性:    
    1、高質量的代碼要求能夠跨平臺,所以我們的代碼應該考慮到對不同的平臺的支持,特別是對windows98和windowsnt的支持。    
    2、由于C語言的移植性比較好,所以對算法函數要求用C代碼,不能用C++代碼。    
    3、對不同的硬件與軟件的函數要做不同的處理
匈牙利命名法


MFC、句柄、控件及結構的命名規范   Windows類型   樣本變量   MFC類   樣本變量  
HWND   hWnd;   CWnd*   pWnd;  
HDLG   hDlg;   CDialog*   pDlg;  
HDC   hDC;   CDC*   pDC;  
HGDIOBJ   hGdiObj;   CGdiObject*   pGdiObj;  
HPEN   hPen;   CPen*   pPen;  
HBRUSH   hBrush;   CBrush*   pBrush;  
HFONT     hFont;     CFont*   pFont;  
HBITMAP     hBitmap;   CBitmap*   pBitmap;  
HPALETTE     hPaltte;   CPalette*   pPalette;  
HRGN     hRgn;   CRgn*   pRgn;  
HMENU     hMenu;   CMenu*   pMenu;  
HWND     hCtl;   CState*     pState;  
HWND     hCtl;   CButton*   pButton;  
HWND     hCtl;   CEdit*   pEdit;  
HWND     hCtl;   CListBox*   pListBox;  
HWND     hCtl;   CComboBox*   pComboBox;  
HWND     hCtl;   CScrollBar*   pScrollBar;  
HSZ     hszStr;   CString     pStr;  
POINT     pt;   CPoint     pt;  
SIZE     size;   CSize     size;  
RECT     rect;   CRect     rect;  


一般前綴命名規范   前綴   類型   實例  
C   類或結構   CDocument,CPrintInfo  
m_   成員變量   m_pDoc,m_nCustomers  


變量命名規范   前綴   類型   描述   實例  
ch   char   8位字符   chGrade  
ch     TCHAR   如果_UNICODE定義,則為16位字符   chName  
b   BOOL   布爾值   bEnable  
n     int   整型(其大小依賴于操作系統)   nLength  
n     UINT     無符號值(其大小依賴于操作系統)   nHeight  
w     WORD     16位無符號值   wPos  
l     LONG     32位有符號整型   lOffset  
dw     DWORD     32位無符號整型     dwRange  
p     *     指針   pDoc  
lp     FAR*     遠指針     lpszName  
lpsz     LPSTR     32位字符串指針   lpszName  
lpsz     LPCSTR     32位常量字符串指針   lpszName  
lpsz     LPCTSTR     如果_UNICODE定義,則為32位常量字符串指針   lpszName  
h     handle     Windows對象句柄   hWnd  
lpfn     callback   指向CALLBACK函數的遠指針      


應用程序符號命名規范   前綴   符號類型   實例   范圍  
IDR_     不同類型的多個資源共享標識   IDR_MAIINFRAME   1~0x6FFF  
IDD_   對話框資源   IDD_SPELL_CHECK     1~0x6FFF  
HIDD_   對話框資源的Help上下文   HIDD_SPELL_CHECK     0x20001~0x26FF  
IDB_     位圖資源   IDB_COMPANY_LOGO     1~0x6FFF  
IDC_   光標資源   IDC_PENCIL     1~0x6FFF  
IDI_   圖標資源   IDI_NOTEPAD     1~0x6FFF  
ID_   來自菜單項或工具欄的命令   ID_TOOLS_SPELLING     0x8000~0xDFFF  
HID_   命令Help上下文   HID_TOOLS_SPELLING     0x18000~0x1DFFF  
IDP_   消息框提示   IDP_INVALID_PARTNO     8~0xDEEF  
HIDP_   消息框Help上下文   HIDP_INVALID_PARTNO     0x30008~0x3DEFF  
IDS_   串資源   IDS_COPYRIGHT     1~0x7EEF  
IDC_   對話框內的控件   IDC_RECALC     8~0xDEEF  


Microsoft   MFC宏命名規范   名稱   類型  
_AFXDLL   唯一的動態連接庫(Dynamic   Link   Library,DLL)版本  
_ALPHA   僅編譯DEC   Alpha處理器  
_DEBUG   包括診斷的調試版本  
_MBCS   編譯多字節字符集  
_UNICODE   在一個應用程序中打開Unicode  
AFXAPI     MFC提供的函數  
CALLBACK   通過指針回調的函數    


庫標識符命名法   標識符   值和含義  
u     ANSI(N)或Unicode(U)  
d     調試或發行:D   =   調試;忽略標識符為發行。  


靜態庫版本命名規范   庫   描述  
NAFXCWD.LIB   調試版本:MFC靜態連接庫  
NAFXCW.LIB   發行版本:MFC靜態連接庫  
UAFXCWD.LIB   調試版本:具有Unicode支持的MFC靜態連接庫
 
UAFXCW.LIB   發行版本:具有Unicode支持的MFC靜態連接庫  


動態連接庫命名規范   名稱   類型  
_AFXDLL   唯一的動態連接庫(DLL)版本
 
WINAPI     Windows所提供的函數  


Windows.h中新的命名規范   類型   定義描述  
WINAPI   使用在API聲明中的FAR   PASCAL位置,如果正在編寫一個具有導出API人口點的DLL,則可以在自己的API中使用該類型  
CALLBACK   使用在應用程序回叫例程,如窗口和對話框過程中的FAR   PASCAL的位置  
LPCSTR   與LPSTR相同,只是LPCSTR用于只讀串指針,其定義類似(const   char   FAR*)  
UINT   可移植的無符號整型類型,其大小由主機環境決定(對于Windows   NT和Windows   9x為32位);它是unsigned   int的同義詞  
LRESULT   窗口程序返回值的類型  
LPARAM   聲明lParam所使用的類型,lParam是窗口程序的第四個參數  
WPARAM   聲明wParam所使用的類型,wParam是窗口程序的第三個參數  
LPVOID   一般指針類型,與(void   *)相同,可以用來代替LPSTR    

posted on 2011-01-17 10:51 心羽 閱讀(522) 評論(0)  編輯 收藏 引用 所屬分類: C/C++
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久精选视频| 免费人成精品欧美精品| 亚洲日本成人网| 美女网站久久| 亚洲欧洲一区二区在线观看| 狂野欧美激情性xxxx| 久久久水蜜桃| 亚洲福利视频一区二区| 亚洲国产精品一区二区三区| 欧美黄色aaaa| 这里是久久伊人| 亚洲尤物精选| 经典三级久久| 亚洲国产美女精品久久久久∴| 亚洲全部视频| 亚洲人成毛片在线播放| 欧美视频在线观看免费| 亚洲欧美怡红院| 久久激情婷婷| 亚洲精品日韩在线观看| 日韩视频在线观看国产| 国产精品亚洲一区| 久久综合久久美利坚合众国| 你懂的亚洲视频| 亚洲午夜在线视频| 欧美中文在线免费| 亚洲伦理自拍| 亚洲欧美精品伊人久久| 在线看片一区| 亚洲无亚洲人成网站77777| 国产亚洲综合在线| 亚洲精品乱码久久久久久蜜桃91| 欧美国产精品v| 欧美日在线观看| 久久久久久国产精品一区| 欧美国产日本韩| 欧美在线视频观看免费网站| 老鸭窝91久久精品色噜噜导演| 欧美激情一区二区三区在线视频| 久久婷婷激情| 亚洲先锋成人| 久久综合网色—综合色88| 亚洲一级二级| 免费不卡欧美自拍视频| 欧美在线免费视频| 欧美日韩精品免费看| 欧美国产日产韩国视频| 国产麻豆日韩欧美久久| 亚洲人成免费| 国语自产精品视频在线看抢先版结局 | 在线综合+亚洲+欧美中文字幕| 久久九九国产精品| 免费在线成人| 久久婷婷成人综合色| 国产精品成人免费| 亚洲人成艺术| 亚洲日本免费| 久久综合网络一区二区| 久久久久久久久久久成人| 国产精品久久久久国产a级| 亚洲区国产区| 亚洲精品一级| 欧美国产精品| 亚洲电影天堂av| 亚洲国产成人av| 久久久夜夜夜| 久久嫩草精品久久久精品一| 国产农村妇女精品一区二区 | 国产精品久久久一区麻豆最新章节 | 一本一本久久| 亚洲天天影视| 欧美日韩亚洲一区| av成人免费观看| 一区二区三区国产在线| 久久伊伊香蕉| 欧美国产日韩a欧美在线观看| 女同性一区二区三区人了人一 | 欧美激情第三页| 欧美gay视频激情| 在线看不卡av| 欧美成人综合| 日韩视频不卡| 亚洲午夜电影| 国产精品久久9| 亚洲视频中文| 久久精品30| 一区二区三区在线观看欧美| 久久欧美中文字幕| 欧美黄色精品| 一本色道**综合亚洲精品蜜桃冫| 日韩视频在线一区二区三区| 亚洲精品自在在线观看| 欧美日韩美女| 在线一区二区三区四区五区| 欧美亚洲网站| 国产在线不卡| 老司机免费视频一区二区| 亚洲激情另类| 亚洲欧美精品suv| 国产日韩欧美综合精品| 欧美在线视频不卡| 最新国产乱人伦偷精品免费网站| 欧美色欧美亚洲另类二区| 夜夜嗨一区二区三区| 亚洲欧洲av一区二区| 黄色成人精品网站| 欧美精品国产一区| 亚洲一级影院| 欧美成人一区二区三区片免费| 国产精品高清网站| 久久久综合免费视频| 亚洲人成小说网站色在线| 中日韩在线视频| 激情综合自拍| 欧美三级午夜理伦三级中文幕 | 欧美中文字幕不卡| 亚洲精品国产精品国自产在线 | 亚洲国产欧美一区二区三区同亚洲| 国产精品视频午夜| 麻豆精品传媒视频| 欧美一区二区三区四区视频| 亚洲日本va在线观看| 久久精品盗摄| 亚洲一区成人| 亚洲精选视频免费看| 国内精品伊人久久久久av一坑| 这里是久久伊人| 欧美国产精品| 久久欧美肥婆一二区| 亚洲欧美日韩综合aⅴ视频| 亚洲级视频在线观看免费1级| 久久久久九九视频| 香蕉av777xxx色综合一区| 亚洲精品在线观看免费| 亚洲电影有码| 另类激情亚洲| 欧美亚洲免费在线| 亚洲少妇一区| 一区二区三区高清不卡| 亚洲精品乱码| 亚洲国产精品一区二区久| 红桃视频亚洲| 在线免费观看一区二区三区| 国产丝袜美腿一区二区三区| 欧美日韩一区二区三区| 欧美激情一区二区三级高清视频| 一本久久综合亚洲鲁鲁五月天| 性色一区二区三区| 亚洲一区在线观看视频| 中文高清一区| 亚洲综合色在线| 亚洲一区二区在线免费观看视频 | 久久久蜜桃一区二区人| 久久精品国产第一区二区三区| 久久久久久久高潮| 久久gogo国模啪啪人体图| 性色av一区二区三区| 久久xxxx| 久久久久免费视频| 另类天堂av| 欧美高清视频一区二区| 亚洲国产精品一区二区第一页 | 亚洲黄色毛片| 亚洲国产高清在线观看视频| 亚洲日本久久| 亚洲永久精品大片| 欧美一区激情| 美女尤物久久精品| 欧美成人tv| 亚洲免费观看视频| 亚洲视频在线观看视频| 久久爱另类一区二区小说| 久久综合网hezyo| 欧美日韩亚洲一区二区三区在线观看 | 欧美成人69av| 亚洲人成亚洲人成在线观看| 99在线视频精品| 午夜视频在线观看一区二区三区| 亚洲激情小视频| 亚洲无人区一区| 久久福利资源站| 欧美日韩 国产精品| 国产精品午夜av在线| 在线观看中文字幕不卡| 一本久久精品一区二区| 久久久国产视频91| 亚洲人体1000| 亚洲一级片在线观看| 六十路精品视频| 国产美女精品视频免费观看| 亚洲第一久久影院| 欧美一区二区三区四区在线观看 | 在线观看一区| 一本色道久久综合亚洲精品不 | 国产乱码精品一区二区三区忘忧草| 欧美精品免费播放| 国产欧美在线观看| 99亚洲一区二区| 美女主播精品视频一二三四| 亚洲在线免费视频|