zoukankan      html  css  js  c++  java
  • C++命名规范

    1.1    类型名

    首字母大写,末尾加_T。如: class TnppCoverageArea_T{…};

    1.2    1.2 变量和函数名

           变量和函数名中首字母小写,其后每个英文单词的第一个字母大写,其他小写。

           如: int flexPageCount;

    1.3    全大写函数名

    有一类函数,它们调用普通函数,只是对普通函数的错误返回做一般化处理。这些函数的名字要和所包含的函数名相同,只是全用大写字母。

    1.4    宏、常量和模板名

    全部大写。

    如: #define PIE 3.14   const int LENGTH = 1024;   template<class TYPE_T>

    1.5    指针标识符名

    以p或者Ptr开头。如: char* pName;

    1.6    变量名前缀

    i_ 类内数据成员(对象级成员)       instance scope

    c_ 类内静态数据成员(类级成员)  class scope

    g_ 全局变量                                     global scope

    f_ 文件作用域变量(静态变量)      file scope

    如:

    Class Message_T

    {

            //类内静态数据成员

    Static int c_id;

            //类内普通数据成员

            int i_id;

    }

            //全局变量

            int g_id;

            //静态变量(文件作用与)

            static int f_id;

    1.7    全局命名空间级标识符的前缀

    全局命名空间级标识符:全局或文件级变量名、常量名、宏名、类型名、函数名等

    前缀:全大写字母,长度少于3个字母

    如:class UML_HashMap_T

    1.8    减少全局命名空间级标识符

    可将其归放到某个命名空间、类或函数中。

    1.9    命名时避免使用国际组织占用的格式

    己知的被占用的格式

    双下划线开头     ISO C++、ANSI C;

    包含双下划线     ISO C++;

    单下划线开头     ISO C++、ANSI C;

    E[0_9A_Z]开头    ANSI C;

    is[a_z]开头        ANSI C;

    to[a_z]开头       ANSI C;

    LC_开头         ANSI C;

    SIGLA_Z]开头    ANSI C;

    str[a_z]开头      ANSI C;

    mem[a_z]开头    ANSI C;

    wcs[a_z]开头     ANSI C;

    _t结尾          POSIX;

    1.10  命名要本着清楚、简单的原则

    1.11  尽量用可发音的名字

    // 不可发音的名字

    class Ymdhms;

    // 可发音的名字

    class Timestamp_T;

    1.12  尽量用英文命名

    1.13  尽量选择通用词汇并贯穿始终

    1.14  避免用模棱两可、晦涩或不标准的缩写

    1.15  避免使用会引起误解的词汇

    1.16  减少名字中的冗余信息

    1.17  建议起名尽量通俗,太专一会限制以后的扩展

    1.18  名字最好尽可能精确地表达其内容

    1.19  避免名字中出现形状混淆的字母或数字

    如:F0o

    1.20  命名类和成员使得“object.method()”有意义

    1.21  类和对象名应是名词

    1.22  实现行为的类成员函数名应是动词

    1.23  类的存取和查询成员函数名应是名词或形容词

    1.24  变量名应是名词

    1.25  布尔型的名字要直观

    1.26  关于函数的左值参数和右值参数名

    用lhs做左值参数的名字,用rhs做右值参数的名字。

    如:

    // 类的拷贝构造函数

    MyC1ass_T::MyClass_T(MyClass_T const&rhs);

    // 赋值函数

    int operator=(String const&lhs,String const&rhs);

    1.27  避免局部名和外层的名字冲突

    1.28  用a、an、any区分重名参数

    void MyClass_T::severity (int aSeverity)

    {

    i_severity=aSeverity;

    }

    1.29  模板类型名应有意义

    // 用T1、T2不好

    template〈class T1,int T2〉

    class Vector_T

    {

    Tl i_data[T2];

    };

    // 用TYPE-T和SIZE就清楚多了

    template〈class TYPE_T,int SIZE〉

    class Vector_T

    {

    TYPE_T  i_data[SIZE];

    };

  • 相关阅读:
    控制器View的加载过程
    iOS程序的完整启动过程(有storyboard)
    SDWebImage的使用
    iOS开发中自定义字体的方法
    3.Ubuntu 16.04.6 离线安装 docker
    2.Ubuntu 16.4.6 Server IP配置及shell访问设置
    1.VMware安装Ubuntu 16.4.6 Server
    大话设计模式读书笔记系列-5.工厂方法
    Solr4.10.4 加中文分词
    windows+tomcat8.5+solr环境配置教程
  • 原文地址:https://www.cnblogs.com/johnpher/p/2723727.html
Copyright © 2011-2022 走看看