/catalog/5b44b7aebbe041098fbfd868e044f805//Document/296736299995205.html/Document/267328648106053.html/Document/267018778099781.html/Document/266676511322181.html/Document/265619597201477.html/Document/235862026059845.html/Document/235543126302789.html/Document/235180874285125.html/Document/234831289405509.html/Document/234475373678661.html/Document/233059773943877.html/Document/232687006150725.html/Document/232354139811909.html/Document/230936619933765.html/Document/230597170643013.html/Document/230237883404357.html/Document/229522033393733.html/Document/228458058801221.html/Document/227760545189957.html/Document/227398664417349.html/Document/227055527931973.html

白盒测试——C/C++编程规范(13)
本系列文章将带大家一起解析一下白盒测试经常用到的GJB-8114标准规则,其中一共有124条强制性规则。GJB-8114强制性规则是按类分的,一共有13类,前面的文章已经讲过一部分,本文继续往下进行,为大家介绍一下分支控制类规则。

R-1-4-1在if…else if…else中不能省略else分支

在“if…else if…else”结构中,最后这个else分支是不能省略的。往往我们在写程序的时候写“if…else if…”后面没有程序要处理了,就不写了。

这种情况下,程序的执行应该是没有问题的,但是咱们的规则要求,后面必须要带else,同时写上一个注释:其他情况不处理等等,后面一定要有一个else。

这个大家要记住,是if…else if…else”结构中最后的else必须存在,“if…else”这个语句,后面是可以不带else的。

R-1-4-2条件分支如果为空,必须以单独一行的分号加注释进行明确说明

这个实际上是为了让读程序的人知道这个是一个空的分支,不作处理,标准形式是单独一行的分号加注释。如果你什么都没有,或者只有一个分号,或者没有分号只有一个注释,这些都不符合规则。

为什么这么规定呢?这个就是为了阅读方便。就是一个强制性的规则,对程序没有任何影响,但是比较严格的测评机构就会给你提问题了。

R-1-4-3禁止使用空switch语句

凡是写过程序的人,基本上很少有犯这种错误的,咱们的GJB-8114规则中也提出了这样的要求。

R-1-4-4禁止对布尔变量使用switch语句

一个布尔变量它除了真的就是假的,所以不能用switch语句来判断,只能用if、else这种方式来判断。

R-1-4-5禁止switch语句中只包含default语句

也就是说一个switch语句中,至少有一个 case语句、一个default语句。

R-1-4-6除枚举类型列举完全外,switch必须要有default

比如说一个枚举类型里面有三种情况,就必须要把这三种情况列全,如果没有列全的话,就必须有default。换句话说,switch语句除非你把所有的情况都用case写完了,否则必须要有default语句。

R-1-4-7 Switch中的case和default必须以break或return终止,共有case必须加以明确注释,要求必须以“/*shared*/”形式注

比如说我们的case1、case2、case3都想用同一种处理方式,像遵循示例中表示的,case2和case3处理相同,用一个注释说明,就直接跳到case3了,一定有一个明确的注释,而不是case2里面丢了一个break。

R-1-4-8 Switch语句的所有分支必须具有相同的层次范围

像违背示例中展示的例子,它的层次范围构成了一个单独的单元,if后面用大括号括起来了,在里面用了一个break,else实际上是接着往下执行的,所以它是错的,当然我们写程序的时候很少会这样写。