《高质量C++编程指南》第2章~程序的版式--【优秀的编程思想】
【摘要】 目录
程序的版式就和书法一样
2.1 空行
2.2 代码行
2.3 代码行内的空格
2.4 对齐
2.5 长行拆分
2.6 修饰符的位置
2.7 注释
2.8 类的版式
程序的版式就和书法一样
2.1 空行
(1)每个类声明后、每个函数定义结束后都要加空行
(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
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)