《高质量C++编程指南》第2章~程序的版式--【优秀的编程思想】

版权声明:本文为博主原创文章,未经允许,不得转载!欢迎留言附带链接转载! https://blog.csdn.net/qq_15698613/article/details/89461087

目录

程序的版式就和书法一样

2.1 空行

2.2 代码行

 2.3 代码行内的空格

2.4 对齐

 2.5 长行拆分

 2.6 修饰符的位置

2.7 注释 

 2.8 类的版式


 程序的版式就和书法一样

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()
{
}

猜你喜欢

转载自blog.csdn.net/qq_15698613/article/details/89461087