代码规范:程序的版式

简介: 空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。空行不会浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。

2.1 空行

空行起着分隔程序段落的作用。空行得体(不过多也不过少)将使程序的布局更加清晰。空行不会浪费内存,虽然打印含有空行的程序是会多消耗一些纸张,但是值得。


所以不要舍不得用空行。


【规则 2-1-1】在每个类声明之后、每个函数定义结束之后都要加空行。参见示例2-1(a)

// 空行
void Function1(…)
{
}
// 空行
void Function2(…)
{
}
// 空行
void Function3(…)
{
}

【规则 2-1-2】在一个函数体内,逻揖上密切相关的语句之间不加空行,其它地方应加空行分隔。参见示例 2-1(b )

// 空行
while (condition)
{
  statement1;
  // 空行
  if (condition)
  {
    statement2;
  }
  else
  {
    statement3;
  }
  // 空行
  statement4;
}

补充:单个函数是为了完成某些功能逻辑的,如果功能逻辑分为多步,建议使用双空行进行分割

int main(int argc, char * argv[])
{
   //初始化方位
   float s = 34.63397;
   float w = 114.12389;
   float n = 38.79397;
   float e = 119.30389;
   char * szOpenFile = "E:\\detect_work\\Z_RADR_I_Z9531_20210705035903_O_DOR_SAD_CAP_FMT.bin.bz2";
   char * ptr_basedata;
   char * outpng = argv[2];
   szOpenFile = argv[1];
   int DataByte;
   CDataStd std;
   //使用三方库解析产品文件
   //根据位数大小创建缓冲区,用来存放基数据。
   //校验雷达数据合理性,并加载内部类指针数据
   //获取雷达基数据和任务配置、扫描配置信息.
   //计算雷达边界数据
   //开始获取 全部的PPI仰角层数中的 基数据产品头中最大的//164-195 强度库数 //196-227 速度\谱宽库数
   //创建二维数据矩阵存储产品信息 [方位][强度/速度]
   //创建完毕获取数据
   std.get_data(&info, R, V, W, ZDR, KDP, PHI, CC, SNRH);
   //进行质量控制
   return 0;
}

2.2 代码行

【规则 2-2-1】一行代码只做一件事情,如只定义一个变量,或只写一条语句。这样的代码容易阅读,并且方便于写注释。


【规则 2-2-2】if、for、while、do 等语句自占一行,执行语句不得紧跟其后。不论执行语句有多少都要加{}。这样可以防止书写失误


示例 2-2(a)为风格良好的代码行

  int width; // 宽度 
int height; // 高度 
int depth; // 深度 
x = a + b; 
y = c + d; 
z = e + f; 
if (width < height) 
{ 
  dosomething(); 
} 
for (initialization; condition; update) 
{ 
  dosomething(); 
} 
// 空行 
other(); 

,示例 2-2(b)为风格不良的代码行。



示例 2-2(a) 风格良好的代码行 示例 2-2(b) 风格不良的代码行

示例 2-2(a) 风格良好的代码行 示例 2-2(b) 风格不良的代码行
int width, height, depth; // 宽度高度深度
X = a + b; y = c + d; z = e + f; 
if (width < height) dosomething(); 
for (initialization; condition; update) 
 dosomething(); 
other(); 

【建议 2-2-1】尽可能在定义变量的同时初始化该变量(就近原则)


如果变量的引用处和其定义处相隔比较远,变量的初始化很容易被忘记。如果引用


了未被初始化的变量,可能会导致程序错误。本建议可以减少隐患。例如

int width = 10; // 定义并初绐化 width


int height = 10; // 定义并初绐化 height


int depth = 10; // 定义并初绐化 depth


补充说明:

1. 在使用传入参数时,尽量先进行数据内容的校验。

2. 如果不确定有无合法参数,可以使用缺省值初始化形参。


2.3 代码行内的空格

【规则 2-3-1】关键字之后要留空格。象 const、virtual、inline、case 等关键字之后至少要留一个空格,否则无法辨析关键字。象 if、for、while 等关键字之后应留一个空格再跟左括号‘(’,以突出关键字。


【规则 2-3-2】函数名之后不要留空格,紧跟左括号‘(’,以与关键字区别。


【规则 2-3-3】‘(’向后紧跟,‘)’、‘,’、‘;’向前紧跟,紧跟处不留空格。


【规则 2-3-4】‘,’之后要留空格,如 Function(x, y, z)。如果‘;’不是一行的结束符号,其后要留空格,如 for (initialization; condition; update)。


【规则 2-3-5】赋值操作符、比较操作符、算术操作符、逻辑操作符、位域操作符,如“=”、“+=” “>=”、“<=”、“+”、“*”、“%”、“&&”、“||”、“<<”,“^”等二元操作符的前后应当加空格。


【规则 2-3-6】一元操作符如“!”、“~”、“++”、“–”、“&”(地址运算符)等前后不加空格。


【规则 2-3-7】象“[]”、“.”、“->”这类操作符前后不加空格。


【建议 2-3-1】对于表达式比较长的 for 语句和 if 语句,为了紧凑起见可以适当地去掉一些空格,如 for (i=0; i<10; i++)和 if ((a<=b) && (c<=d))

bd5aedb31b59d44a92e313ccb9a5f1b2_3d84e5ff50dc4486b7819e677b2960f3.png


2.4 对齐

【规则 2-4-1】程序的分界符‘{’和‘}’应独占一行并且位于同一列,同时与引用它们的语句左对齐。


【规则 2-4-2】{ }之内的代码块在‘{’右边数格处左对齐。

void Function(int x)
{
  … // program code
}
if (condition)
{
  … // program code
}
else
{
  … // program code
}
for (initialization; condition; update)
{
  … // program code
}
While (condition)
{
  … // program code
}
如果出现嵌套的{},则使用缩进对齐,如:
{
  {
  }
}

补充说明:尽量不要出现三级以上的嵌套循环。


2.5 长行拆分

单行长度控制在70-80字符内

换行时,操作符尽量在前。

ace9720a49a6bd7a722ce00453df0ebb_c0ce06af347e4c48b8fd2a6456632886.png


2.6 修饰符的位置

为了不引起歧义,修饰符尽量和变量名靠近。

char *name;
int *x, y;

2.7 注释

行注释使用//....,
代码块注释使用/*.....*/
函数声明注释使用
/**
* ...
* ...
* ...
* ...
**/


2.8 类的版式

f4d4bc5b0a24a47ba75aa9628ea3bdac_f072759cb9eb4f25bd37c0db205bf428.png

服务器高级架构体系:https://xxetb.xet.tech/s/4DEnTI

目录
相关文章
|
C语言
让你提前认识软件开发(6):程序的版式和注释
第1部分 重新认识C语言 程序的版式和注释            在《高质量程序设计指南(C/C++语言)》中,作者说:可以把程序的版式比喻为“书法”,好的“书法”可以让人对程序一目了然,看得兴致勃勃。
1009 0
|
存储
十种高级的代码书写方式,提高代码质量和工作效率
十种高级的代码书写方式,提高代码质量和工作效率
104 0
自媒体 | 使用Markdown高效率编写文档
自媒体 | 使用Markdown高效率编写文档
168 0
自媒体 | 使用Markdown高效率编写文档
|
9月前
|
程序员 开发工具 C++
C/C++ 程序员编程规范之排版
C/C++ 程序员编程规范之排版
108 1
|
XML JavaScript 前端开发
【高效编程】编码规范与静态代码检查插件的使用(SonarList都用起来吧)
您好,我是码农飞哥,感谢您阅读本文!如果此文对您有所帮助,请毫不犹豫的一键三连吧,前面几篇文章介绍的都是开发类的插件,这篇文章将介绍一下编码规范和静态代码检查相关的插件。
1054 0
【高效编程】编码规范与静态代码检查插件的使用(SonarList都用起来吧)
|
设计模式 自然语言处理 算法
实现高质量婚恋app源码的基础,提升代码可读性
实现高质量婚恋app源码的基础,提升代码可读性
|
8月前
|
算法 安全 编译器
【简洁的代码永远不会掩盖设计者的意图】如何写出规范整洁的代码
【简洁的代码永远不会掩盖设计者的意图】如何写出规范整洁的代码
72 1
|
IDE 开发工具
嵌入式代码的规范性之排版
嵌入式代码的规范性之排版

热门文章

最新文章

相关实验场景

更多