程序过敏反应

来源:互联网 发布:财务指标选股软件 编辑:程序博客网 时间:2024/04/25 07:54

上个周末在家看了集《Doctor House》,一个手上出现红色疱疹的病人来到House医生的医院,House医生根据病症现象诊断为对某种肥皂产生了过敏,然后开了1片抗过敏药,疱疹症状减轻,但一会儿后开始出现呼吸困难并发哮喘,立刻注射了1cc肾上腺素后呼吸开始平稳,但又出现心动过速,很快病人心跳停止,经过一番抢救后,最后又回到原点,手上的红色疱疹开始在全身出现。


这个剧情突然就让我联想到曾经程序中出现的一系列连锁问题,我们在本地开发完成了程序,进行了各种测试感觉完全没问题了,再将它转移到另外一个环境给其他人使用时,有时总会出现些奇怪的问题(进程启动后莫名的消失、运行过程中抛出从未见过的异常,特定情形下的随机错误等等)。现在我把这些问题统统归类为——程序过敏反应。医学上解释的过敏是:“有机体将正常无害的物质误认为是有害的东西,产生抗体”,程序的过敏反应则是:“程序将潜在存在问题的环境当作正常处理,从而产生了异常”。而潜在的环境问题通常就成了程序的“过敏原”。


人体产生过敏反应的原因十分复杂,医生除了给你开抗过敏药来缓解症状外,通常最佳建议都是让你远离过敏原,无法从根本上改变你的身体让其不再过敏。而程序的过敏反应从理论上来说都是可以避免的,但现实就是有些理论就是无法被实践的。一个系统是依赖大量由不同程序员创造的代码来运行的,有些来自第三方,有些是自己开发的,那么就不可能有一个人能完完全全明白整个系统的全部代码,自然也就没人能识别所有代码的“过敏原”,并小心翼翼的绕过这些“过敏原”。


你不知道自己对什么过敏,直到你碰到一种东西引起你过敏。程序世界也一样,有一种药叫抗过敏药,那么也有一种代码叫抗过敏代码。虽然代码规范、设计模式等都是为了帮助程序员写出健壮的、易维护的程序,但解决不了程序的过敏反应。直到你遇到程序过敏现象,并根据现象不断深入挖掘分析出过敏原,才可能开发出抗过敏代码(这里可能存在一个反复试错的迭代过程),就像抗过敏药不能解决所有过敏症状一样,不是所有的程序过敏反应都能通过抗过敏代码来解决,如果代码解决不了只好退而求其次用文档来描述,就像在路上遇到个大坑,第一个碰到的人如果没能力修补好至少可以立块牌,避免后面的人重蹈覆辙。


最后,我想可能有人会有兴趣想知道House医生最后又如何医治那个病人的,答案在《Doctor House》第1季第6集。

原创粉丝点击