从小工到专家读后感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

posted @ 2021-11-22 23:45  慢漫曼蔓  阅读(26)  评论(0)    收藏  举报