《代码整洁之道》笔记第五篇

本篇的内容比较少(其实理解的也不是很好,以后要是想到了什么再补上),主要结合第八章和第九章,
我们先来说说第八章边界,平时我们平时开发中,我理解的边界是数据的边界,例如int变量的最大值最小值,对象为不为空之类的边界,但是本章讲解的边界是一种在使用第三方提供代码时,要注意的事项,也可理解为一种封装。

第八章

使用第三方代码

在平是的开发中我们肯定用过一些优秀的开源项目和一些第三方公司提供的一些sdk,比如友盟,科大讯飞,极光推送…等等的第三方的代码,但是我们在使用的时候是不是直接看着文档,就用了出来。

第三方代码能过帮助我们在更少时间内完成更丰富的内容,再使用第三方的代码时,要从何处入手呢,我们不需要测试第三方代码,但是要为使用第三方代码测试。在这里《代码整洁之道》的作者提出了一种叫“学习性测试”主要的意思就是不要在生产代码中测试使用第三方代码,简单来说,比如我们要使用glide框架来加载图片,不要直接在自己项目上直接就用,而是建立一个demo,模拟项目中的使用环境来使用,并且尽可能了解各个Api的含义和用法。具体使用情况可以查看文档和google,大概用法了解之后,最好可以看看源码大致上是怎么实现的,只看大致流程不要深陷在某一个方法里绕不出来。

还有就是在使用第三方代码的时候最好是应用一个中间类来连接你的项目和第三方代码,这样第三方代码有所改动,或者你想换成fresco来加载图片的时候可以避免修改大量代码,之修改这个中间类的第三方使用方法即可,可以参考工厂模式,或者适配器模式。

整洁的边界

边界上经常发生改动,良好的设计,可以避免巨大的重写即可进行修改,再使用我们控制不了的代码的时候,要非常注意,来确保未来修改不至于代价太大,第三方代码应该尽量让我们少知道一些它本身特定的信息,依靠你能控制的东西,好过依靠你控制不了的东西,免得日后受它控制。

第九章

本章主要讲解的java中的一些单元测试,和自动化测试,我不是很了解,平时接触的也比较少,所以本章是我缺失的知识,以后若了解了会在来仔细补上。

TDD三定律

定律1 在编写不能通过的单元测试前,不能编写生产代码。

定律2 只可编写刚好无法通过的单元测试,不能编译也算不通过。

定律3 只可编写刚好足以通过当前失败测试的生产代码。


保持测试代码的整洁

脏测试代码,修改起来很麻烦,修改生产代码之后,旧的测试代码就会出错,到修改的时候很难修改,久而久之,就放弃了测试代码,生产代码没了测试代码,很容易在生产环境中出错,所以测试代码和生产代码一样重要。
如果测试代码不能保持整洁,就会失去他们,单元测试可以让代码可扩展性,可维护性,可复用性增强,没了测试,很难做出改动,应为担心改动会带来不可预知的缺陷。

每一个测试方法只测试一个功能,

F.I.R.S.T

快速(Fast)测试应该够快,测试运行速度慢,就不会频繁运行,就不能及早发现问题。

独立(Independent) 每个测试方法都应该互相独立,某个测试的结果不应该是另一个测试的依赖。

可重复(Repeatable)测试应该再任何环境中都可以重复运行,在生产环境,没网的火车上,都应该可以运行。

自足验证(Self-Validating)测试的结果应该有boolean值明确指出测试是否成功,而不能给出结果让我们自己去验证成功与否。

及时(Timely)测试应及时编写,单元测试代码应该在生产代码之前编写,这样会方便我们测试,我们的生产代码按照测试的流程去写。