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