文档介绍:Q/××× ××××—××××
2
I
许继集团有限公司发布
××××-××-××实施
××××-××-××发布
C/C++语言代码编写规范
(征求意见稿)
Q/XJ ××××—××××
Q/XJ
” // 引用非标准库的头文件
…
void Function1(…); // 全局函数声明
…
class Box // 类结构声明
{
…
};
… // 其它
#endif
C/C++头文件的结构
为了防止头文件被重复引用,应当用ifndef/define/endif结构产生预处理块。
用 #include <> 格式来引用标准库的头文件(编译器将从标准库目录开始搜索)。
用 #include “” 格式来引用非标准库的头文件(编译器将从用户的工作目录开始搜索)。
头文件中宜只存放“声明” 而不存放“定义”。
不提倡使用全局变量,不宜在头文件中出现extern int value 这类声明。
定义文件的结构
定义文件有三部分内容:
定义文件的版权和版本声明(见图1);
对一些头文件的引用;
程序的实现体(包括数据和代码)。
若定义文件的名称为 ,定义文件的结构见图3。
Q/XJ ××××—××××
2
3
// 版权和版本声明见图1
#include “” // 引用头文件
…
// 全局函数的实现体
void Function1(…)
{
…
}
// 类成员函数的实现体
void Box::Draw(…)
{
…
}
C/C++定义文件的结构
程序的版式
空行
在变量声明之后、每个类声明之后和每个函数定义结束之后应加空行(见图4(左))。
在一个函数体内,逻辑上密切相关的语句之间应不加空行,其它地方应加空行分隔(见图4(右)) 。
// 空行
void Function1(…)
{
…
}
// 空行
void Function2(…)
{
…
}
// 空行
void Function3(…)
{
…
}
// 空行
while (condition)
{
statement1;
// 空行
if (condition)
{
statement2;
}
else
{
statement3;
}
// 空行
statement4;
}
函数之间的空行(左),函数内部的空行(右)
代码行
一行代码宜只做一件事情,如只定义一个变量,或只写一条语句(见图5)。
if、for、while、do等语句应自占一行,执行语句不应紧跟其后。不论执行语句有多少都应加‘{}’(见图5)。
Q/XJ ××××—××××
2
4
int width; // 宽度
int height; // 高度
int depth; // 深度
int width, height, depth; // 宽度高度深度
x = a + b;
y = c + d;
z = e + f;
X = a + b; y = c + d; z = e + f;
if (width < height)
{
dosomething();
}
if (width < height) dosomething();
for (initialization; condition; update)
{
dosomething();
}
// 空行
other();
for (initialization; condition; update)
dosomething();
other();
风格良好的代码行(左),与风格不良的代码行(右)
尽可能在定义变量的同时初始化该变量。
若变量的引用处与其定义处相隔比较远,变量的初始化易被忘记。若引用了未被初始化的变量,易导致程序错误。
:
int width = 10; // 定义并初绐化width
int height = 10; // 定义并初绐化height
int depth = 10; // 定义并初绐化depth
代码行内的空格
void Func1(int x, int y, int z); // 良好的风格
void Func1 (int x,int y,int z);