其他分享
首页 > 其他分享> > 百度高效研发实战训练营-Step4

百度高效研发实战训练营-Step4

作者:互联网

百度高效研发实战训练营-Step4


4.1 代码检测规则:Java案例详解

以Java的案例进行代码检查规则解释,代码检测规则可以分为以下十类:

4.1.1 源文件规范

该类规范,主要为从文件名、文件编码、特殊字符等三个方面制定的规则。

4.1.2 源文件组织结构规范

这一大类规则规定了源文件所应包含的具体组成部分,和各个部分间应遵循的一系列规则。
对于源文件的组成部分,规定如下:
源文件,必须按照顺序包含以下内容,许可证或版权声明、package、import、唯一的顶层类四个方面的内容。同时,每两个部分之间用一个空行进行分隔,不允许出现多余空行,对于以上四个方面的内容,每个组成部分又有相应的编码规则。

1 许可证或版权声明

2 package语句

3 import语句

4 唯一的顶层类

类声明规范

4.1.3 代码结构规范

这一部分规则,主要是对花括号(即大括号),缩进与换行、空行的一系列规范和其他说明。

1 花括号

花括号,经常在类和方法定义以及代码块划分中使用,花括号在使用中常需要合理的换行操作进行配合,规定为:

三个主要原则为:

2 缩进与换行

缩进与换行,主要是为了保证代码风格的一致性,提升代码的可维护性。
主要规范有:

3 空行

合理使用空行,可以提高代码的可读性,有利于后期维护。
对于空行的使用,有如下规范进行约束:

4 其他说明

Java中有两种数组定义形式,为规范代码书写形式,要求为:

而当注解与注释同时存在时,统一的规范要求为:

当同时存在多个修饰符时,需要按照顺序书写,顺序要求如下:

为避免小写字母,l与1混淆,有如下规定:

4.1.4 命名规范

在Java中,无论是方法名还是类名,均需使用驼峰命名格式进行命名。

1 驼峰命名格式

对于两种驼峰命名格式的使用范围,有如下规范:

2 类的命名格式

除此之外,对于一些类,命名格式有更加具体的规范要求:

3 常量命名格式

对于常量的命名规范,与上述所述有所不同:

4.1.5 OOP规约

OOP规约,主要是针对面向对象编程过程中,定义的一些类所制定的一些规则,包含的强制规范要求有

4.1.6 集合处理规范

集合和数组,是我们开发过程中使用频度最高的两个数据结构。
对于二者的使用,也有严格的强制规范:

4.1.7 控制语句规范

Java中的控制语句主要有Switch、if、else、while。这些语句的使用在编码过程中需要遵循以下规范:

4.1.8 注释规约

合理使用注释可以提高程序可读性,从而便于后期的维护。
注释可以是程序说明,也可以是编程思路。
Java中的注释主要分三种形式:文档注释、单行注释和多行注释
注释规约包括:

4.1.9 异常处理规范

在Java中,我们通常使用try catch来进行捕获异常处理,而Java中的异常又分为运行时异常和非运行时异常。对于处理运行时异常,有如下规范:

4.1.10 缺陷检测规则

缺陷检测要是对Java源代码进行静态分析,扫描其中潜在的缺陷,比如空指针异常、死循环等。

这一阶段所应遵循的规则包括:


4.2 单元测试之Java实践

如何写单元测试,这部分包括四个方面,基本流程、测试替身、设计思路、断言(Assertions)。

4.2.1 如何写单元测试

1 基本流程

单元测试的基本流程如下,首先,环境初始化,其次准备输入参数,再次,调用待测试方法,然后检查输出,最后测试完成后环境复原。

环境初始化=>准备输入参数=>调用待测试方法=>检查输出=>测试完成后环境复原。

2 测试替身

下面来介绍一下什么是测试替身。
测试替身,可用于隔离被测试的代码,加速执行顺序,使得随机行为变得确定,模拟特殊情况,以及能够使测试访问隐藏信息等。
在Java代码开发过程中,替身测试能够保证单元测试的独立性与重复性。
常见的测试替身有四类:桩(Stub)、伪造对象(Fake)、测试间谍(Spy)、模拟对象(Mock)等。

对于以上四个类别:

1 桩(Stub)

对于桩,一般什么都不做,实现空的方法调用或者简单的硬编码返回即可。

2 伪造对象(Fake)

真实数据的简单版本,伪造真实对象的欣慰,但是没有副作用或者使用真实事物的其他后果。比如替换数据库的对象,而得到虚假的伪造对象。

3 测试间谍(Spy)

需要得到封闭对象内部状态的时候,就要用到测试间谍,事先学会反馈信息,然后潜入对象内部去获取对象的状态。测试间谍是一种测试替身,它用于记录过去发生的情况,这样测试在事后就能知道所发生的一切。

4 模拟对象(Mock)

模拟对象是一个特殊的测试间谍。是一个在特定的情况下可以配置行为的对象,规定了在什么情况下,返回什么样的值的一种测试替身。目前Mock已经有了非常成熟的对象库,包括JMock、Mockito和EasyMock等。

下面重点讲一下,模拟对象(Mock)。

假如我们有业务逻辑,数据存取,数据这三层逻辑。
现在需要对业务逻辑层进行单元测试,那么我们可以使用Mock,对数据存取和数据层的内容进行模拟,从而使上面的单元测试是独立的。

3 设计思路

下面来讲解怎样通过测试替身来写单元测试:
单元测试case的核心与当前函数的功能实现,对于输出数据做出具体的预期,即可把全部待测试的分支都罗列出来。
应用场景+输入数据+功能实现=输出数据。

4 断言(Assertions)

断言,是一种在Java单元测试中经常使用的测试方法,在单元测试中,我们使用断言,来检验当前的测试结果是成功还是失败。

常见的断言有:Assert.assertNotNull、Assert.assertEquals、Assert.assertTrue、Assert.assertFalse、Assert.fail。无需人工对单元测试结果进行判断。

4.2.2 单元测试的运行

单元测试的运行:
单元测试的运行分为手动与自动两种,第一种是手动方式:

第二种方式是自动运行:

4.2.3 如何判断单元测试的质量

首先来看一下,单元测试的衡量标准。
从主观层面,优秀的单元测试可读性高、易于维护、值得信赖。
从客观层面,使用单元测试代码覆盖率来衡量,覆盖率工具包括:集成IDE和单独部署。

4.3 如何做好Code Review

标签:Java,换行,训练营,单元测试,注释,Step4,测试,使用,百度
来源: https://www.cnblogs.com/isLinXu/p/16372538.html