程序员修炼之道20 完美程序

继续修炼,今天进入了新的一章,叫务实的偏执,暂时没看出偏执在哪里,第一个话题叫完美的程序,或者叫你没法写出完美的程序。

乍一看这个话题,我没太明白作者想表达的观点是什么?程序总是不完美的,接受他的不完美?问题是我们接受了,QA和用户不一定能接受啊。那么这个话题意义在哪里呢?

看完了这一两页,有点明白了,这个话题的逻辑在于,任何人都没法写出完美的程序,那么你必须要时刻小心意外情况的发生。也就是要注意防御性。这个防御性和我今天在retro上分享的稳定,可靠的目标有一些共同之处,防御性做得好当然就不容易被意外情况击倒。

意外情况是如此之多,每天都在发生,防不胜防。比如今天早上我偶尔打开了一个包含有13000条价目表的合同,花了5分钟,一度我以为把系统搞死了......

这是意外情况吗?这也是一个有意思的话题,对用户来说估计不是意外,打开了一个大一点的合同而已,对我们的程序而言,大概率是意外,因为我们预想的费用条目条目几千可能就是一个极限了。

不过这个问题的答案是或不是都不重要,重要的是如果我们认为是正常情况,那我们就应该要支持13000条价目表正常打开,转五分钟才能打开肯定是不行的;如果我们认为是意外情况,那么我们要明确系统能支持正常打开的上限,然后还要准备好超过上限之后的变通情况,比如分页,比如分步加载等等。

那么这就引入了这一章的真正话题,契约式编程,我们要明确这个功能的边界量,大于改边界数量系统就应该进入预设的意外模式。简单的意外处理可能就是中断查询,告诉用户尝试增加查询条件以降低记录数量。至少这样用户知道该如何继续操作,也不会影响系统服务器的性能。

详情明日继续。

你可能感兴趣的:(程序员修炼之道20 完美程序)