首页 > 代码库 > 论防御式编程与攻击式编程
论防御式编程与攻击式编程
今天突然想到了这个话题。
那么,有一部分读者可能并不会很理解我的意思
防御式编程:客户提出什么问题,我们就解决什么问题。
攻击式编程:主动发现问题,其中有一部分问题是性能优化问题,一部分是客户未能发现的BUG。以尽快的方式解决问题。
真实场景:一个功能被做出来了,开发人员于是试了一遍,觉得功能已经出来了,他心里面觉得松了口气,
可以暂时缓了一口气,然后这个功能的测试任务,被分配给了测试人员。
“叮叮叮,小李,过来一下,你这个功能怎么怎么的”。
有以下几种可能情况:
测试人员: 你这个样式在IE7下面有问题,IE7+没问题,所以。。。这算是一个BUG哦。。。
开发人员:我用的就是IE9啊,IE7..这个小问题,没关系吧?
测试人员:万一客户用到了IE7的话。。。。
开发人员:好吧,算是一个BUG,你提交吧。
正想离开。。。
测试人员:你这个功能的程序逻辑有问题,为什么这个功能所有人都可以使用。这个功能本来是给特定人群用的。
快去做权限 设置。
开发人员:糟糕,本来这里我是偷懒的,没想到测试人员这么仔细,看来权限还是要做控制为好。
测试人员:还有一个问题。。。XX你这里不合理,那里也不合理。
开发人员:恩。。恩。。。恩恩。。。。嗯嗯嗯、。。。。。。
最后计算了下,改BUG的时间是开发时间的3~4倍。
为什么会出现这么多BUG呢?
一方面,是自己编程的时候,考虑不周全,另一方面,是由于自己得过且过的心理,即使发现了BUG,也认为无关紧要。
自己不去改它,从而导致测试的时候出一堆BUG。
我们做一个程序,想过没有一个问题,在我们做完程序以后(第一遍),我们有没有能力把显性的或者隐性的问题都给挑出来,在测试人员测试以前,把问题都给扼杀在萌芽中,也许,我说的是一部分问题,能够尽力减轻测试人员的负担,以及我们修复BUG的时间。
我在我们公司有一个防御式编程的经典例子中告诉你们:我们公司去年接到了一个1000万的项目,
具体什么项目我就不说了,我们做的所有功能,经过测试,是不兼容除了IE以外的所有浏览器的,也就是说,只有IE才可以使用,而项目的单位是一个信息化程度很低的地方。我跟项目经理提过这个问题,他就说,如果我改了IE的兼容性问题,他们是不是会提更多的问题?这句话其实也说得对,但是,我就想反问一句,如果你知道这个问题,为什么在做项目不考虑进去呢,非得要等到项目快做完了,大家才开始面对这些问题吗?
为什么不在问题凸显之前把问题解决掉?能优化的地方,难道要等到客户提了,我们才去解决吗?他不提,难道这个问题就不出现了吗?
什么是衡量一个号的程序员的标准?一句话:看他能把目前的项目所优化的程度的高低。
说直接一点,就是发现问题,解决问题(攻击式编程)。
好了,今天牢骚就发到这里,本人入行才1年,讲得不妥的地方,还请各位大神多多指出。