阅读笔记09
阅读笔记09--代码整洁之道
第7章 错误处理
错误处理很重要,但如果它搞乱了代码逻辑,就是错误的做法。本章讲述了雅致处理错误代码的一些技巧和思路
1、使用异常而非返回码
2、先写Try- Catch-Finally语句,异常的妙处之一是,它们在程序中定义了一个范围
3、使用不可控异常
4、可控异常的代价就是违反开闭原则。如果你在方法中抛出可控异常,而catch语句在三个层级之上,你就得在catch语句和抛出异常之处的每个方法签名中声明该异常。这意味着对软件中较低层级的修改,都将波及较高层级的签名。假设某个位于最底层的函数被修改为抛出一个异常,最终的得到的就是一个从软件最底端贯穿到最高端的修改链。
5、给出异常发生的环境说明。应创建信息充分的错误消息,并和异常一起传递出去
6、依调用者需要定义异常类
7、做相对标准的处理。实际上,将第三方API打包是一个良好的实践手段。当你打包了一个第三方API,你就降低了对它的依赖
8、别返回null值,别传递null值,可用assert断言代替
第八章 边界
1、保持软件边界整洁
2、使用第三方代码
4、浏览和学习边界
4、通过编写测试来遍历和理解第三方代码,称为学习性测试(learning tests)
5、在学习性测试中,我们如在应用中那样调用第三方代码。我们基本上都是在通过核对试验来检测自己对那个API的理解程度
第九章 单元测试
有了一套运行通过的测试,任何需要用到代码的人都能方便地使用这些测试
9.1 TDD三定律
TDD(Test - Driven - Development)即测试驱动开发。TDD要求在编写生产代码前先编写单元测试
定律一 在编写不能通过的单元测试前,不可编写生产代码
定律二 只可编写刚好无法通过测试的单元测试,不能编译也算不通过
定律三 只可编写刚好足矣通过当前失败测试的生产代码
9.2 保持测试整洁
脏测试等同于----如果不是坏于的话----没测试,测试代码和生产代码一样重要。
单元测试让代码可扩展、可维护、可复用
整洁的测试要有高度的可读性
每个测试都应该拆分为三个环节,构造测试数据、操作测试数据、检验操作是否得到预期结果。即构造–操作–检验(Build–Operate–Check)。
单个断言是个好准则,(单个测试中的断言数量应该最小化)
9.3 F.I.R.S.T
整洁的测试还遵循以下5条规则
快速(fast)测试应该够快运行
独立(independent)测试应该相互独立
可重复(repeatable)测试应当可在任何环境中重复通过
自足验证(self-validating)测试应该有布尔值输出
及时(timely)测试应及时编写