C++代码规范之命名

来源:互联网 发布:淘宝网秒杀专区 编辑:程序博客网 时间:2024/05/10 15:15

一、命名的两个基本原则

 

1、含义清晰,不易混淆;

2、不和其它模块、系统API的命名空间相冲突。

 

二、命名通则

1、在所有命名中,都应使用标准的英文单词或缩写;不得使用拼音或拼音缩写,除非该名字描述的是文

    特有的内容(如半角、全角声母、韵母等);除非必要,不要用数字或较奇怪的字符来定义标识符。

2、所有命名都应遵循达意原则,即名称应含义清晰、明确。

3、所有命名都不易过长,应控制在规定的最大长度以内。

4、所有命名都应尽量使用全称。

5、命名中若使用特殊约定或缩写,则要有注释说明。 

6、自己特有的命名风格,要自始至终保持一致,不可来回变化。

 

   说明:个人的命名风格,在符合所在项目组或产品组的命名规则的前提下,才可使用。(即命名规则中

         没有规定到的地方才可有个人命名风格)。

 

7、在同一软件产品内,应规划好接口部分标识符(变量、结构、函数及常量)的命名,防止编译、

   链接时产生冲突。

8、对于变量命名,禁止取单个字符(如ijk...),建议除了要有具体含义外,还能表明其变量

   类型、数据类型等,但ijk作局部循环变量是允许的。

 

   说明:变量,尤其是局部变量,如果用单个字符表示,很容易敲错(如i写成j),而编译时又检查不

         出来,有可能为了这个小小的错误而花费大量的查错时间。

      :下面所示的局部变量名的定义方法可以借鉴。

        int liv_Width

          其变量名解释如下:

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

         i      数据类型(Interger

         v      变量(Variable   (其它:c    常量(Const...

         Width  变量含义

         这样可以防止局部变量与全局变量重名。

 

9、命名规范必须与所使用的系统风格保持一致,并在同一项目中统一,比如采用UNIX的全小写加下划线

   的风格或大小写混排的方式,不要使用大小写与下划线混排的方式,用作特殊标识如标识成员变量或全

   局变量的m_g_,其后加上大小写混排的方式是允许的。

 

   例: Add_User不允许,add_userAddUserm_AddUser允许。

 

10、用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。

 

    说明:下面是一些在软件中常用的反义词组。

          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 );

 

11、除了编译开关/头文件等特殊应用,应避免使用_EXAMPLE_TEST_之类以下划线开始和结尾的定义。

12、程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,

    但会使人误解。

三、具体规范

 

1、工程名

       不强制统一。

2、文件名:

       基于工程名,开头3个字母应表明与哪一个工程相关。

       后面的字母应能够区别不同的功能。

       不区分大小写。

       长度不限于8.3格式,建议不多于30个字符。

       若文件用于定义和实现类,建议文件名与类名保持一致。

3、函数名

       参照 Windows API 的命名规范。

       推荐使用动宾结构。函数名应清晰反映函数的功能、用途。

       函数名最长不得超过30个字符。

       函数名第一个字母必须大写。

       全局函数必须以小写前缀"g"开头。全局函数的名字应当使用“动词”或者“动词+名词”(动宾词

       组)。类的成员函数应当只使用“动词”,被省略掉的名词就是对象本身。

           

                 DrawBox(); // 全局函数
                 box->Draw(); // 类的成员函数

 

4、变量名:

       原则上,变量名的命名遵从匈牙利记法。即:前缀 + 类型 + 变量名

       变量名最长不得超过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

5、类名:

       必须以大写"K"开头,后面字母反映具体含义,以清晰表达类的用途和功能为原则。

       接口必须以大写"I"开头,代表 Interface

       当名称由多个单词构成时,每一个单词的第一个字母必须大写。

6、结构名、宏名、枚举名、联合名:

       全部大写。

       枚举名加小写前缀"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

 

 

原创粉丝点击