异常也是一种状态,所以你写程序的时候必须考虑到它,如果忽略了它,那么当它发生时你的程序就会出错(运行时错误)。举个例子,你在写rs232通讯程序的时候,如果没有考虑到通讯会有一种叫出错的状态,比如被电磁干扰或被物理中断(比如通讯线线断了),那么你写程序里面必然就没有对这种状态的处理代码,那么一旦出现这种状态,程序必然会出错。
所以判断一个程序员有没有经验,通过观察他写的程序里面有没有异常状态的处理代码就能看出来
所以为什么很多程序员调试程序的时间甚至比他写程序的时间还长,就是因为他写程序时没有考虑到所有的异常状态。这样一来,就有两种程序员,第一种,思维缜密,在写程序时就考虑到了所有的异常状态,程序写好就可以运行,完全无需调试;第二种,思维简单,写程序的时候基本不考虑异常状态,这样的程序就是所谓的漏洞百出的程序,调试起来自然费时间。第一种程序员又可以分为两类,第一类是先搞定正常代码,然后在正常代码上添加异常处理代码;第二类是写代码的时候正常异常代码一起写。
这也是软件项目很难做计划的一个原因,一般开发都要赶进度,项目经理是希望越快搞定项目越好,底下的员工就没有那么多时间去思考异常状态的代码了,那么这样写出来的程序表面看起来可以用了,但必然是有问题的,一旦出了问题,免不了要加班加点调试代码。
引申一下的话,生活和工作中的其它事情也一样。
比如说生活中的日常开支,如果你只考虑正常状态的话可能没多少钱,但生活中难免会有各种突然意外事件,比如生病,比如送礼,比如突然冒出的什么想法,甚至与天灾人祸。
再比如说生活中的全职家庭主妇,你可能觉得她很轻松,其实等你尝尝全职家庭主妇的生活你就知道了,要考虑的事情比你想象中的要多很多。
工作也一样,对于一件你不是很有经验的事情(比如你没做过的事或一些创造性的活动),如果你估计完成它需要一个小时,那么一般你完成它会要两个小时,如果你追求完美的话,可能需要四个小时。
这说明,人的想象力终究是有限的,没有经历过的事情,你只能想象到它的一半内容,另一半只有你经历过了才会明白。所以,身体健康的人永远无法完全体会残疾人的痛苦,男人永远无法完全体会女人的想法。明白了这一点,在与别人沟通的时候,就不会老是觉得自己是对的了,或者总摆出一些我是在为你着想的态度,因为对方的立场你只能了解一半,你用他一半的立场推论出他应该具有的表现,必然是错误的。明白了这一点,基本上就不会与人发生什么争吵了。当你对某人的行为或语言很愤怒的时候,你会觉得他不可理喻,你觉得你是对的,他不讲道理,你觉得你已经站在他的立场替他考虑了,但他得寸进尺,实际上,他没有你想的那么糟糕,他的表现出乎你的意料,只是因为你只考虑到了他一半的想法,还有一半,除非他亲口告诉你,否则你永远也不会知道。但后面这一半想法因为种种原因(比如疾病,某些无法告人的经历等),他永远也不会告诉你。这一点在“利他”这本书中(ISBN: 9787506064958)濑户内寂听也说过。