代码规范:程序的版式

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

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

目录
相关文章
|
网络协议 数据安全/隐私保护 Windows
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
Windows Server 各版本搭建域控制器实现通过域管理用户(03~19)
|
域名解析 网络协议 安全
信息收集的工具你听过几种(盘点信息收集)
信息收集的工具你听过几种(盘点信息收集)
信息收集的工具你听过几种(盘点信息收集)
|
5月前
|
监控 安全 数据安全/隐私保护
销售易CRM:技术架构与安全性能的深度解析
销售易CRM基于云计算与微服务架构,融合高可用性、弹性扩展及模块化开发优势,为企业提供灵活定制化的客户关系管理解决方案。系统采用多层次安全防护机制,包括数据加密、细粒度权限控制和实时监控审计,确保数据安全与隐私保护。某金融机构的成功案例表明,销售易CRM显著提升了数据安全性和系统性能,同时满足行业合规要求。作为数字化转型的利器,销售易CRM助力企业实现可持续发展与市场竞争力提升。
|
监控 前端开发 JavaScript
ARMS的Web应用监控
【8月更文挑战第23天】
172 8
|
前端开发 Java 数据处理
每日一道面试题之介绍一下Java Bean并谈谈它的命名规范~
每日一道面试题之介绍一下Java Bean并谈谈它的命名规范~
370 0
|
机器人
RPA如何影响就业市场?
【8月更文挑战第4天】RPA如何影响就业市场?
207 7
|
运维 安全 编译器
代码规范:头文件规范
用以在实验过程和运维过程里遇到突发情况时即时回退 研发交付时,运维和甲方能够拿到成熟的产品项目 新人接入时能够快速上手
163 0
|
Web App开发 存储 物联网
一文了解 HTTP 基础知识
HTTP(Hypertext Transfer Protocol,超文本传输协议)是用于在网络上传输数据的一种协议,对于网络开发人员来说,理解这一协议是至关重要的。由于其广泛的应用,除了在网页应用传输数据之外,它还被应用于物联网(IoT)中的数据和命令传输。
|
机器学习/深度学习 算法 数据挖掘
分类算法中决策树和KNN算法讲解及对iris数据集分类实战(附源码)
分类算法中决策树和KNN算法讲解及对iris数据集分类实战(附源码)
340 0
|
弹性计算
阿里云带宽按流量计费价格表
阿里云带宽按流量计费价格表,阿里云服务器流量怎么收费?地域不同流量价格也不同,北京、杭州、深圳等地域流量价格0.8元/GB,中国香港流量价格是1元每GB,阿里云百科网分享公网带宽按使用流量计费不同地域节点的收费价格表
303 0