C++思索之旅:第三课【c++代码的命名规范和书写规范】

 

命名命名,包括文件名、类名、结构名、类型名、函数名、变量名、参数名等都是程序设计中重要的一部分。一个好的名称...



命名
命名,包括文件名、类名、结构名、类型名、函数名、变量名、参数名等都是程序设计中重要的一部分。一个好的名称,体现了一个深思熟虑的过程,同时也能够帮助别人更好地理解开发者的思路。如果发现程序中,充满了a, b, c, x, y, z,tmp这种命名的变量,这时候就需要仔细的考虑自己的实现是否有问题。

类(结构)名
类名必须是名词,类名必须明确表示这个类代表了什么。
如果类名超过3个单词,说明这个类有可能需要拆分了。
不要把父类的名字带到子类中。
类名加上后缀也是一种选择。如下载代理类,可以写为DownloadProxy。
类名首字母大写;用大写字母分隔单词,除单词的首字母外,全部小写;类名中不要出现下划线“_”。

类(结构)属性名
属性由成员前缀”m_“属性,属性名采用匈牙利命名规范。

方法
方法与函数执行一个任务,因此应当用动词来命名。比方说,DumpDataToFile()就要好于DataFile()。
方法名首字母大写;用大写字母分隔单词,除单词的首字母外,全部小写,方法名中不要出现下划线。

函数
方法与函数执行一个任务,因此应当用动词来命名。
函数名全部小写,单词之间用下划线分隔。

方法与函数参数名
首字母小写。
除了第一个单词,所有单词的首字母大写。
名称中不应出现”_”。

类库名
如果使用C书写类库,或在C++不使用namespace书写类库,为了避免命名冲突,需要在类名,结构名,函数名前加上类库名前缀。类库名应当简洁、明确。如:
ImEgg*ImEgg_new();

变量名
变量名使用匈牙利命名规则。
全部小写字母。
使用”_”作为分隔符。
唯一能违反以上命名规则的,是一些循环中需要用到的自增变量。 如:
intfun(Point* pPoint)
{
Point* p_nest_point = pPoint;
char* p = NULL;
char sz_buf[255];
for (int i = 0; i < 50 && (sz_buf+p++) != &#39; &#39;;i++)
{
// do stuff
}
}
另外,循环变量可根据循环变量类型命名,比如:

p point;w word; ch char; n number; whc widechar

指针变量
指针变量应在类型前加上p前缀,其后变量名命名规则不变。
*号永远靠近类型,一行声明中只出现一个指针变量。 如:
Point* p_point;

引用变量
引用变量应在类型前加上r前缀,其后变量名命名规则不变。

全局变量
全用变量应使用g_属性描述,其后变量名命名规则不变。 如:
ImLog4c* g_pLogger;

静态变量
静态变量应使用s_属性描述,其后变量名命名规则不变。
ImLog4c* s_pLogger;

枚举类型
枚举类型命名规则使用大写字母,用下划线分隔单词。
Enum PIN
{
PIN_ON = 1;
PIN_OFF;
};


宏命名规则使用大写字母,用下划线分隔单词。
#define MAX_LENGTH 50
#define MAX(a, b) (a)>(b)?(a):(b)

集合名称
集合名称使用复数,其它与变量名规范相同。
GList* edges = g_list_new();
vector edges;
typedef vector EdgeVector;
typedef map EdgeMap;
typedef list EdgeList;

——————————————————————————————————————————

格式
{}规则
“{“与”}”单独占一行。
“{“与”}”与上一行行首对齐。
If与while后哪怕只有一句话,也要加上“{“与”}”。
while(*(buf+p++) != &#39; &#39;)
printf("hello
");

()规则
"("与前一个关键字之间留一个空格。
"("与前函数名之间不需要留一个空格。
Return语句尽可能不要用"()"
return(a*b^2>100)?(a):(b);

缩进规则
缩进永远为4。
用空格代替tab。
Tab永远用4。
如果缩进超过5层,考虑代码优化。

列长度
一列不应该超过80个英文字符。
一个声明占一行
一个声明占一行。

三元表达式
条件表达式占一行
then与else应单独占一行。
(condition)    funct1() : func2();
Or
(condition)
long statement
: anotherlong statement;

头文件顺序
头文件应当按照与功能的特点性从高到低排列。顺序为
当前目录的头文件。
自行开发库的头文件。
第三方库的头文件。
标准C++头文件。
标准C头文件。

空格
操作符需要加上空格。
关键字前后要加上空格。
逗号后要加上空格。
冒号后要加上空格。
在一行内的分号后要加上空格,行末的分号不要空格。
fun(a,b);
for (int I =0; I < 50; i++);

类与结构

类文件与结构文件命名
公有类,C中用以模拟类的结构,需要位于一个独立的文件中。
文件名与公有类名,C中用以模拟类的结构名相同。

类与结构头文件布局
文件描述,使用Doxygen语法。
头文件保护宏。
头文件。
类或结构描述,使用Doxygen语法。
类或结构名。
属性描述,使用Doxygen语法。以下每个属性或方法都要求对应一个描述。
属性声明。
C++与身命周期相关函数声明。C++中的构造方法,析构方法以及工厂方法。
C++操作符重载。
C++访问器,get与set方法。


    关注 C语言程序设计


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册