从小工到专家读后感4
第四章注重时效的偏执
You Can't Write Perfect Software
你不可能写出完美的代码
注重实效的程序员连自己也不信任。知道没有人能编写出完美的代码,包括自己,所以注重实效的程序员针对自己的错误进行防卫性的编码。
按合约设计
DBC
软件设计中为了确保软件模块的权利与责任,以确保程序的正确性,也引入了合约的概念,这就是DBC(Design By Contract)按合约设计。
DBC的方式:用文档记载并约定软件模块的权利和责任,以确保程序正确性。用文档记载这样的声明,并进行校验,是按合约设计(DBC)的核心所在。
DBC的流程:
1.前条件:为了调用例程,必须为真的条件
2.后条件:例程保证会做的事情
3.类不变项:类确保从调用者的视角来看,该条件总是为真
Design with Contracts
通过合约进行设计
实现DBC
1.断言
支持断言式编程的语言可以通过断言部分实现DBC。
为什么是部分实现?因为:
首先,断言不支持继承层次向下遗传
其次,断言不支持“老”值。(什么是“老”值?)
最后,runtime和库的设计不支持合约(什么意思?)
2.语言支持
有些语言内建对DBC的支持(Eiffel和Sather)
C,C++的有些预处理器能处理作为特殊注释嵌入在代码中的DBC。预处理器可以把这些注释展开为断言代码(Nana)
Java可以使用iContract

浙公网安备 33010602011771号