程序员修炼之道 第四章
第四章 注重实效的偏执
21按合约设计
Bertrand Meyer为 Eiffel 语言发展了按合约设计的概念一。这是一种简单而强大的技术,它关注的是用文档记载(并约定)软件模块的权利与责任,以确保程序正确性,什么是正确的程序?不多不少,做它声明要用文档记载这样的声明,并进行校验,是按合约设计(简称 DBC)。使用DBC的最大好处是它迫使需求与保证的问题走到前台来。出错时要偏向消费者 这是清楚、简洁、无歧义的陈述,适用于系统的许多不同的领域,它是我们与系统的所有用户之间的合约,是我们对行为的保证
22死程序不说谎
所有的错误都能为你提供信息。你可以让自己相信错误不可能发生,并选择忽略它。但与此相反,注重实效的程序员告诉自己,如果有-非常、非常糟糕的事情已经发生了。Crash Early早崩溃。尽早检测问题的好处之一是你可以更早的崩溃。当你的代码发现,某件被认为不可能发生的事情已经发生时,你的程序就不再有存活能力。从此时开始,它所做的任何事情都会变得可疑,所以要尽快终止它,死程序带来的危害通常比有疾患的程序要小得多,
23断言式编程
每个程序员似乎都有一个核心信仰:这绝不会发生...... 我能不能这样自我欺骗,特别是在编码时。无论何时你发现自己在思考“但那当然不可能发生”。增加代码检查它 最容易的方法是使用断言。不要用断言代替真正的错误处理,断言检查的事绝不应该发生的事情。另外,让断言开着,不要关闭
24何时使用异常
关于异常的问题之一是知道何时使用它,异常很少应作为程序的正常流程的一部分使用;异常应保留给意外事件。将异常用于异常的问题。异常表示即时的、非局部的控制转移。错误处理器是另一种选择,错误处理器是检测到错误时调用的例程,你可以登记一个例程处理特定范畴的错误,处理器会在其中一种错误发生时被调用。