《高质量C++编程指南》第2章~程序的版式--【优秀的编程思想】
目录
程序的版式就和书法一样
2.1 空行
(1)每个类声明后、每个函数定义结束后都要加空行
(2)一个函数体内,逻辑密切之间不加空行,其他地方加空行
-
//(1)
-
//blank
-
void Function1()
-
{
-
...
-
}
-
//blank
-
void Function2()
-
{
-
...
-
}
-
//blank
-
void Function3()
-
{
-
...
-
}
-
//(2)
-
//blank
-
while (condition)
-
{
-
statement1;
-
//blank
-
if (condition)
-
{
-
statement2;
-
}
-
else
-
{
-
statement3;
-
}
-
//blank
-
statement4;
-
}
2.2 代码行
(1)一行代码只做一件事,只定义一个变量,或只写一条语句,方便阅读和注释
(2)if \ for \ while \ do 各占一行,不论多少语句都要加{}
(3)尽可能在 定义变量的同时初始化该变量
-
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 (i initialization; condition; update)
-
{
-
dosomething();
-
}//千万不要省略{}
-
//blank
-
other();
-
-
//就近原则,定义变量的同时初始化该变量
-
int width; //宽度
-
int height //高度
-
int depth; //深度
2.3 代码行内的空格
(1)关键字后面要留空格。比如:const、virtual、inline、case;if ,for , while 后面有个空格后再加()
(2)函数名后不要留空格,紧跟()
(3)左括号( 向后紧跟; 右括号),逗号,分号;向前紧跟,紧跟不留空格
(4)逗号,之后要有空格,比如function(x, y, z)如果有分号;也是后面留空格x; y; z;
(5)赋值操作,比较操作,算术操作,逻辑操作,位域操作;=;+=;>=;<=;+;*;%;&&;||;<<;^前后都加空格
(6)一元运算符!;~;++--;&(地址)前后都不能加空格
(7)[];. ;->这类的前后也不加空格
(8)如果for,if语句,由于表达式特别长,则可以省略其中一部分空格
-
void func1(int x, int y, int z);//逗号后加空格
-
-
if (year >= 2000)//前后加空格
-
-
if ((a >= b) && (c <= d)) //
-
-
for (i=0; i<10; i++)//分号后加空格
-
-
for (i = 0; i < 10; i++) //空格太多了,不好!
-
-
x = a < b ? a : b;
-
-
int *x = &y; //注意*
-
-
array[5] = 0;
-
-
a.function();
-
-
b->function();
-
2.4 对齐
(1)程序分界符{ } 应当独立占一行并位于同一列,同时与引用他们的语句左边对齐
(2){ } 之内的代码块要缩进数格,然后左对齐
-
void Function(int x)
-
{
-
code ...
-
}
-
-
//-------------------------------------------------------
-
if (condition)
-
{
-
code ...
-
}
-
else
-
{
-
code ...
-
}
-
-
//-------------------------------------------------------
-
for (size_t i = 0; i < length; i++)
-
{
-
code ...
-
}
-
-
//-------------------------------------------------------
-
while (true)
-
{
-
code ...
-
}
-
-
//-------------------------------------------------------
-
//循环嵌套
-
{
-
...
-
{
-
...
-
}
-
}
2.5 长行拆分
(1)代码行最长 别超过七八十个字符, 不利于看和打印
(2) 要在低优先级操作符那里拆分,操作符放前面突出,适当缩进,排版整齐
-
//-------------------------------------------------------
-
if ((very_longer_variable1 >= very_longer_variable2)
-
&& (very_longer_variable3 >= very_longer_variable4)
-
&& (very_longer_variable5 >= very_longer_variable6))
-
{
-
dosomething();
-
}
-
-
//-------------------------------------------------------
-
virtual CMatrix CMultiplyMatrix(CMatrix leftMatrix,
-
CMatrix rightMatrix);
-
-
//-------------------------------------------------------
-
for (very_longer_initialization;
-
very_longer_conditionl;
-
very_longer_update)
-
{
-
dosomething();
-
}
2.6 修饰符的位置
修饰符*和&应该靠近数据类型还是靠近变量名?
(1)应当将修饰符*和&紧靠变量名
char *name;
int *x, y; //此时y就不会被误解为指针了!!!!
2.7 注释
(1)注释是提示,不要太多
(2)代码很清楚时不要画蛇添足
(3)边写代码边注释,修改代码时 同时修改相应注释,以保证一致性,不再有用的注释要删除
(4)注释应当准确易懂,不要有歧义
(5)避免注释时使用 缩写
(6)注释的位置与代码相邻,别差太远,放在上边或右边,别放下面!!!
(7)代码 比较长,多重嵌套,应当在一些段落结尾处注释
-
/*
-
* 函数介绍
-
* 输入参数
-
* 输出参数
-
* 返回值
-
*/
-
void Function(float a, float b, float c)
-
{
-
...
-
}
-
-
//--------------------------------------------
-
if (true)
-
{
-
...
-
while (true)
-
{
-
...
-
} //这里写注释 end of while
-
...
-
} //这里写注释 end of if
2.8 类的版式
类提供关键字public protected private
分别用于声明公有,受保护,私有
(1)将private类型写在前面,将public写在后面,主张“以数据为中心”,重点关注类的内部结构
(2)将public类型卸载前面, 将private类型卸载后面,主张“以行为为中心”
-
//以行为为中心版式
-
class MyClass
-
{
-
public:
-
MyClass();
-
~MyClass();
-
-
private:
-
int i, j;
-
float x, y;
-
....
-
};
-
-
MyClass::MyClass()
-
{
-
}
-
-
MyClass::~MyClass()
-
{
-
}
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/89461087
- 点赞
- 收藏
- 关注作者
评论(0)