理论教育 避免使用空块,提高程序可读性与可维护性

避免使用空块,提高程序可读性与可维护性

时间:2023-11-26 理论教育 版权反馈
【摘要】:空块的存在大大降低了程序的可读性、简洁性与可维护性。有时候,由于设计上的原因,一段代码临时没法确定其内容,可以用“//TODO”定义一个空块做特别标记,等需求确定以后再把代码补上。实例3 优化后——空try catch finally语句☆代码6:After类解析:代码3中第10行finally块有空代码,这个地方没有相应的处理内容,那么就直接去掉finally块部分代码。

避免使用空块,提高程序可读性与可维护性

优化前代码

实例1

动动脑筋:本例代码中有哪些瑕疵,应该如何优化?

代码1:Before类

实例2

动动脑筋:本例代码中有哪些瑕疵,应该如何优化?

代码2:Before类

实例3

动动脑筋:本例代码中有哪些瑕疵,应该如何优化?

代码3:Before类

现象类别

规约。

现象描述

常见的空块一般有以下几种情况:

①多余的分号“;”,如实例1,如果是条件式后面直接是分号,有可能引起Bug。

②多余大括号“{}”,如实例2,往往是无意中留下的垃圾代码。

③空finally语句,如实例3,try catch finally三者是一个语句组合,如果finally里面不需要任何处理,那么finally语句就不要保留。

不利影响分析

空块的存在,很容易引起误解:过一段时间可能程序员自己都会怀疑为什么这个地方会有这样的代码?是漏写了?还是失误?百思不得其解,是删除还是保留?还是继续调查需求文档?等等。一系列令人头痛的问题就出来了!为了避免这些没必要的麻烦,不该要的代码都需要删掉。空块的存在大大降低了程序的可读性、简洁性与可维护性

检测工具或方法

①(C)Empty Block。(www.daowen.com)

②(P)Empty Finally Block。

③(EM)代码覆盖率

最佳解决方案

对于空块,发现一个就要毫不犹豫的删除一个。有时候,由于设计上的原因,一段代码临时没法确定其内容,可以用“//TODO”定义一个空块做特别标记,等需求确定以后再把代码补上。

※温馨提示——如何防止犯低级错误?

本章前面几个例子看起来虽然简单,可是实际操作起来不一定都能做好。之所以要特别说明,因为高质量的代码是简洁的,代码的作用是清楚的,是要各司其职的。特别是作为一名立志成为高手的程序员,如果不注意避免这种低级失误,它就成为了自己交付成果物的污点,也构成了对自己职业品质的负面影响。通俗一点讲,我们宁肯犯高级的错误,也千万别犯低级的错误。防止犯低级错误的方法既需要平时的功夫积累,也需要多仔细检查(8020原则)。

优化后代码

实例1 优化后——多余的分号

代码4:After类

解析:

代码1中第5行多了个分号,改变了程序执行的业务逻辑。本意是参数变量isTrue为真的时候,执行第6行代码,现在变成无论变量isTrue是否为真,都会执行第6行代码。

if语句默认的执行逻辑是其之后的第一句话,为了避免误读甚至是逻辑错误,无论其后跟的语句是否只有一句,都需要用大括号把if之后的内容都包含起来,也就是说要把if和大括号当为孪生兄弟一样同时出现。

实例2 优化后——多余大括号

代码5:After类

解析:

代码2中第5行与第6行多了大括号,要毫不犹豫的删掉。同时,第7行与第8行的if语句里面是没有任何意义的代码,这个地方要么删除要么写上未完成标志。

实例3 优化后——空try catch finally语句

代码6:After类

解析:

代码3中第10行finally块有空代码,这个地方没有相应的处理内容,那么就直接去掉finally块部分代码。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈