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

举报
王博Kings 发表于 2020/12/30 02:02:07 2020/12/30
2.9k+ 0 0
【摘要】 目录 程序的版式就和书法一样 2.1 空行 2.2 代码行  2.3 代码行内的空格 2.4 对齐  2.5 长行拆分  2.6 修饰符的位置 2.7 注释   2.8 类的版式  程序的版式就和书法一样 2.1 空行 (1)每个类声明后、每个函数定义结束后都要加空行 (2)一个函数体内,逻辑密切之间不加空行,其他地方加空行  //(...

目录

程序的版式就和书法一样

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

文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。

原文链接:kings.blog.csdn.net/article/details/89461087

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。