C++代碼規範之命名

C++代碼規範之命名

1、命名的兩個基本原則ide

一、含義清晰,不易混淆;函數

二、不和其它模塊、系統API的命名空間相沖突。spa

 

2、命名通則代碼規範

一、在全部命名中,都應使用標準的英文單詞或縮寫;不得使用拼音或拼音縮寫,除非該名字描述的是文對象

    特有的內容(如半角、全角、聲母、韻母等);除非必要,不要用數字或較奇怪的字符來定義標識符。接口

二、全部命名都應遵循達意原則,即名稱應含義清晰、明確。作用域

三、全部命名都不易過長,應控制在規定的最大長度之內。rem

四、全部命名都應儘可能使用全稱。get

五、命名中若使用特殊約定或縮寫,則要有註釋說明。 產品

六、本身特有的命名風格,要自始至終保持一致,不可來回變化。

   說明:我的的命名風格,在符合所在項目組或產品組的命名規則的前提下,纔可以使用。(即命名規則中沒有規定到的地方纔可有我的命名風格)。

七、在同一軟件產品內,應規劃好接口部分標識符(變量、結構、函數及常量)的命名,防止編譯、連接時產生衝突。

八、對於變量命名,禁止取單個字符(如i、j、k...),建議除了要有具體含義外,還能代表其變量類型、數據類型等,但i、j、k做局部循環變量是容許的。

   說明:變量,尤爲是局部變量,若是用單個字符表示,很容易敲錯(如i寫成j),而編譯時又檢查不出來,有可能爲了這個小小的錯誤而花費大量的查錯時間。

     例:下面所示的局部變量名的定義方法能夠借鑑。

        int liv_Width

     其變量名解釋以下:

         l      局部變量(Local)  (其它:g    全局變量(Global)...)

         i      數據類型(Interger)

         v      變量(Variable)   (其它:c    常量(Const)...)

         Width  變量含義

     這樣能夠防止局部變量與全局變量重名。

九、命名規範必須與所使用的系統風格保持一致,並在同一項目中統一,好比採用UNIX的全小寫加下劃線的風格或大小寫混排的方式,不要使用大小寫與下劃線混排的             方式,用做特殊標識如標識成員變量或全局變量的m_和g_,其後加上大小寫混排的方式是容許的。

    例: Add_User不容許,add_user、AddUser、m_AddUser容許。

十、用正確的反義詞組命名具備互斥意義的變量或相反動做的函數等。

    說明:下面是一些在軟件中經常使用的反義詞組。

          add / remove      begin / end      create / destroy        insert / delete

          first / last      get / release    increment / decrement   put / get

          add / delete      lock / unlock    open / close            min / max

          old / new         start / stop     next / previous         source / target

          show / hide       send / receive   up / down    cut / paste

       例:

        int  min_sum;

        int  max_sum;

        int  add_user( BYTE *user_name );

        int  delete_user( BYTE *user_name );

十一、除了編譯開關/頭文件等特殊應用,應避免使用_EXAMPLE_TEST_之類如下劃線開始和結尾的定義。

十二、程序中不要出現標識符徹底相同的局部變量和全局變量,儘管二者的做用域不一樣而不會發生語法錯誤,但會令人誤解。

 

3、具體規範

一、工程名

     不強制統一。

二、文件名:

     基於工程名,開頭3個字母應代表與哪個工程相關。

     後面的字母應可以區別不一樣的功能。

     不區分大小寫。

     長度不限於8.3格式,建議很少於30個字符。

     若文件用於定義和實現類,建議文件名與類名保持一致。

三、函數名:

     參照 Windows API 的命名規範。

     推薦使用動賓結構。函數名應清晰反映函數的功能、用途。

     函數名最長不得超過30個字符。

     函數名第一個字母必須大寫。

     全局函數必須以小寫前綴"g"開頭。全局函數的名字應當使用「動詞」或者「動詞+名詞」(動賓詞組)。類的成員函數應當只使用「動詞」,被省略掉的名詞就是對象    自己。

   例:

                 DrawBox(); // 全局函數
                 box->Draw(); // 類的成員函數

四、變量名:

     原則上,變量名的命名聽從匈牙利記法。即:前綴 + 類型 + 變量名

     變量名最長不得超過20個字符。

     變量的名字應當使用「名詞」或者「形容詞+名詞」。

   例:

              float value;
              float oldValue;

      1)格式:[m_|s_|g_] type [class name|struct name] variable name

          2)解釋:

               m_ : 類的成員變量

              ms_:類的靜態成員變量

              s_ :靜態全局變量

              g_ :普通全局變量

              類型縮寫(type)

              char, TCHAR: ch

              char[],TCHAR[]: sz

              bool, BOOL: b

              int, __int16,__int32,__int64: n

              long: l

              double: d

              float: ft

              BYTE: by

              WORD: w

              DWORD: dw

              unsigned: u

              function: fn

              p :pointer

              lp :pointer

五、類名:

       必須以大寫"K"開頭,後面字母反映具體含義,以清晰表達類的用途和功能爲原則。

       接口必須以大寫"I"開頭,表明 Interface 。

       當名稱由多個單詞構成時,每個單詞的第一個字母必須大寫。

六、結構名、宏名、枚舉名、聯合名:

       所有大寫。

       枚舉名加小寫前綴"enum"。

       例:

                     typedef enum _KFILE_OPEN_MODE

                    {

                         enumOPEN_READONLY = 0;

                         enumOPEN_READWRITE = 1;

                         enumCREATE_ALWAY = 3 ;

                     } KFILE_OPEN_MODE;

         宏名加小寫前綴"def"。

         例:

                      #define defMAXNUMBER 100

       結構名加小寫前綴"tag",以後必須以大寫"K"開頭。

         例:

                       typedef struct tagKPOINT

                       {

                             int x;

                             int y;

                        } KPOINT;

          聯合名加小寫前綴"uni"。

          例:

                      typedef union _VARIANT

                     {

                          char unichVal;

                          int uninVal;

                          long unilVal;

                          float uniftVal;

                     } VARIANT;

   說明:對接口部分的標識符應該有更嚴格限制,防止衝突。如可規定接口部分的變量與常量以前加上  「模塊」標識等。

   說明:應該在源文件的開始之處,對文件中所使用的縮寫或約定,特別是特殊的縮寫,進行必要的註釋說明。

   說明:較短的單詞可經過去掉「元音」造成縮寫;較長的單詞可取單詞的頭幾個字母造成縮寫。

         一些單詞有你們公認的縮寫。

          例:temp 可縮寫爲 tmp

               flag 可縮寫爲 flg

               statistic 可縮寫爲 stat

               increment 可縮寫爲 inc

               message 可縮寫爲 msg

相關文章
相關標籤/搜索