第 6 章 风 险 事 业假如将一程序员置于悬崖边, 给他绳子和滑翔机, 他会怎样从悬崖上下来呢?是沿绳子爬下来呢?还是乘滑翔机呢?还是干脆直接跳下来呢?是沿绳子爬下来还是使用滑翔机我们说不太准,但可以肯定,他不会跳下来,因为那太危险了。可是当程序员有几种可能的实现方案时, 他们却经常只考虑空间和速度, 而完全忽视了风险性。 如果程序员处于这样的悬崖边而又忽视了风险性,只考虑选择到达崖底最有效的途径的话结果又将如何呢?程序员忽视风险性,至少有两个原因:一是因为他们盲目地认为,不管他们怎样实现编码,都不会有错误。 没有任何程序员会说:“我准备编写快速排序程序,并打算在程序中有三个错误。 ”程序员并没有打算出错,而后来错误出现了,他们也并不特别吃惊。我认为程序员忽视风险性的第二个原因也是主要原因:在于从来没有人教他们这样去问问题:“该设计有多大的风险性?该实现有多大的风险性?有没有更安全的方法来写这个表达式?能否测试一下该设计?”要想问出这些问题, 首先必须从思想上放弃这样的观点:不管作出哪种选择, 最后总能得到无错代码。