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

};

原文转自:http://www.cnblogs.com/johnpher/archive/2012/10/15/2723727.html

原作者为 Jiang, X.

C++命名规范的更多相关文章

  1. JavaScript var关键字、变量的状态、异常处理、命名规范等介绍

    本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...

  2. Java命名规范

    驼峰法则: 将所有字母都小写(包括缩写),然后将单词的第一个字母大写. 每个单词的第一个字母都大写,来得到大驼峰式命名. 除了第一个单词,每个单词的第一个字母都大写,来得到(小)驼峰式命名. 为避免歧 ...

  3. JavaScript知识点总结(命名规范,变量的作用域)

    命名规范 有人说JavaScript的宽容性是这个语言最糟糕的方面之一.比如说想把2个数字加在一起,JavaScript会把其中一个数字解析成字符串,那么就会得到一个奇怪的字符串,而不是2个数字的和. ...

  4. js的命名规范

                   js的命名规范   1.驼峰命名法:首字母是小写的,接下来的字母都以大写字符开头.例如: var testValue = 0; var oneValue = 10; 2. ...

  5. 浅谈Android编码规范及命名规范

    前言: 目前工作负责两个医疗APP项目的开发,同时使用LeanCloud进行云端配合开发,完全单挑. 现大框架已经完成,正在进行细节模块上的开发 抽空总结一下Android项目的开发规范:1.编码规范 ...

  6. [No000099]软件版本命名规范

    软件版本阶段说明 Base: 此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是页面中的功能都没有做完整的实现,只是做为整体网站的一个基础架构. Alpha: 此版本表示该软件在 ...

  7. Google C++命名规范

    时间:2014.03.02 地点:基地 -------------------------------------------------------------------------------- ...

  8. javascript命名规范

    javascript命名规范 3.命名 命名的方法通常有以下几类: a).命名法说明 1).camel命名法,形如thisIsAnApple 2).pascal命名法,形如ThisIsAnApple ...

  9. Android 命名规范 (提高代码可以读性)

    android文件众多,根据名称来辨别用途很重要,因此命名要规范 这篇文章可参考:Android 命名规范 (提高代码可以读性) 刚接触android的时候,命名都是按照拼音来,所以有的时候想看懂命名 ...

  10. Android资源(图片)命名规范

    (转自:http://www.jb51.net/article/38796.htm) 图片命名注意: 1,不能以下划线("_")开头: 2,以数字加下划线("[0-9]_ ...

随机推荐

  1. Altium Designer 出现错误提示(警告)adding items to hidden net GND/VCC

    一般出现这个提示,不是错误. 可以取消net 网格标号 这样就不会报这个警告了. 还可以设置规则,不让它报告. 点击确定,但是再次打开工程时有得警告这个错误了.我想,还是取消NET标注.

  2. 猜拳游戏GuessGame源码

    该游戏是一款比较不错的猜拳游戏GuessGame源码案例,GuessGame——猜拳游戏,这也是我自己的第一款休闲类的游戏案例,游戏实现也比较简单的,希望这个能够帮大家的学习和使用,更多安卓源码尽在源 ...

  3. Java报表FineReport在医院院长查询分析系统中有什么用

    1.医院院长查询系统的价值 目前,大中型医院的信息处理正从传统手工方式飞速向电脑信息化建设方案转变,一个大中型医院担负着繁重的医疗和科研任务,以及繁杂的事务性工作,院长必须时刻与各科室保持密切的连续, ...

  4. Docker on Microsoft Azure

    Docker蓬勃发展,如日中天.微软自然也不甘落后,且不说即将发布的.支持Docker技术的Windows Nano Server和Windows Server 2016.我们来看看在Microsof ...

  5. Flex4 vs Flex3: Repeater vs DataGroup

    repeaters太老土了!如果你过去使用过它,你会发出这种感概.现在,我们终于要摆脱它了.Repeaters不仅有沉重的组件,而且接合使用很不方便.那么,Flex 4中有什么可以帮助我们吗?Data ...

  6. Hibernate关联映射关系

    Hibernate关联映射关系 一.双向一对多关联映射关系:当类与类之间建立了关联,就可以方便的从一个对象导航到另一个或另一组与它关联的对象(一对多双向关联和多对一双向关联是完全一样的) 1.1创建实 ...

  7. PageContext

    pageContext对象 pageContext对象是JSP中很重要的一个内置对象,不过在一般的JSP程序中,很少用到它,所以知道request对象.response对象的人比较多,知道pageCo ...

  8. 关于数组的map、reduce、filter

    map:map()方法定义在Array中,传入自己的参数,就得到一个新的Array作为结果 var aqiData = [ ["北京", 90], ["上海", ...

  9. 利用substring()方法,把一个表的不同分级所对应的字段名取出来。

    实例:现在有一个物料分类的表.知道表的第四级的值,要取前面的2,3级值. 例如,如图所示: 可以通过取前面几个字段的值,得到对应级别的值.利用substring(),但是因为要写在一句话里. 因此可以 ...

  10. [转]❲阮一峰❳Linux 守护进程的启动方法

    ❲阮一峰❳Linux 守护进程的启动方法 "守护进程"(daemon)就是一直在后台运行的进程(daemon). 本文介绍如何将一个 Web 应用,启动为守护进程. 一.问题的由来 ...