这一章的核心思想是,程序员必须承认一个残酷的现实:完美的软件是不存在的。既然我们无法写出毫无瑕疵的代码,那么就必须采取一种“偏执”的防御性策略,来应对必然存在的错误和不确定性。作者将这种策略比作防御性驾驶。在开车时,我们不仅要遵守交通规则,还要时刻警惕其他司机的错误,并提前预判可能发生的意外。同样,在编程时,我们不能只相信自己的代码,还要对输入的数据、调用的外部库、甚至是我们自己写的代码保持怀疑。本章介绍了几种关键的防御性技术。首先是按合约设计 ,它要求我们为每个函数或方法明确地规定其“权利”与“责任”,就像签订一份合同,明确了双方的责任,能极大地减少因误解而产生的错误。其次是死程序不说谎,主张当程序遇到无法处理的错误时,与其让它带着错误的数据继续运行,不如让它立即崩溃,因为一个“死”掉的程序比一个“带病”运行的程序更容易调试和修复。此外,还有断言式编程,通过在代码中插入断言来检查那些“理论上不可能发生”的情况,帮助我们在问题发生的源头就抓住它。本章还讨论了何时使用异常,强调异常应该用于处理真正的“异常”情况,而不是作为程序正常流程的一部分。最后,怎样配平资源强调了“有始有终”的原则,即分配资源的代码也应该负责释放资源,以有效防止内存泄漏和资源耗尽等问题。
荆州市网站建设_网站建设公司_内容更新_seo优化