您的位置:首页 > 编程语言

《代码大全》学习摘要(三)防御式编程

2014-05-01 23:58 239 查看
        今天阅读的是《代码大全》的第8章——“防御式编程”。书中提到的防御式编程并非针对网络安全数据安全方面的保护,而是如何有效的处理程序中出现的错误。

        对于一名程序员来说,在编码实现的过程中出现错误是再正常不过的事情,但如何有效处理这些错误就不是每个程序员都能做的好的,这一章作者就从断言、错误处理技术、异常、隔离程序等几个方面入手介绍了处理错误基本方法和基本事项。

下面是我阅读这一章后记录下的一些要点:

1、防御式编程的意义在于“你永远也不能确定另一位司机将要做什么”,子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据。

2、断言(assertion)是指在开发期间使用的、让程序在运行时进行自检的代码;断言通常包括一个描述假设为真时的布尔表达式,和一个断言为假时需要显示的信息

3、用错误处理代码来处理预期会发生的情况,用断言来处理绝不应该发生的状况

4、避免把需要执行的代码放到断言中,这部分代码可能最终不会被编译到产品代码中,用断言来注解并验证前条件和后条件。

5、对于高健壮性的代码,应该先使用断言再处理错误,适用于非常复杂的项目(比如MIcrosoft Word)。

6、错误处理技术包括返回中立值(没有危害性的数据,如0、空字符串)、换用下一个正确的数据、返回与上一次相同的数据、换用最接近的合法值、把警告信息记录到日志文件中、返回错误码、调用错误处理子程序、显示出错信息、关闭程序

7、处理错误最恰当的方式要根据出现错误的软件类型而定,人身安全攸关的软件往往倾向于正确性而非健壮性,消费类应用软件往往更注重健壮性而非正确性。

8、一旦确定了某种处理方法,就要确保始终如一地贯彻这一方法

9、异常是把代码中的错误或异常事件传递给调用方代码的一种特殊手段,只有在真正例外的情况下才抛出异常,不要用异常来推卸责任

10、使用隔栏隔离程序,使之包容由错误造成的损害。即让软件的某些部分处理“不干净”的数据,其它部分处理“干净的”数据,可以让大部分代码无须再检查错误数据。

11、隔栏外部的程序应使用错误处理技术,隔栏内部的程序应使用断言技术,因为传进来的数据应该已被清理过了。

12、不需要把产品级软件的限制加在开发中的软件上使用一些调试辅助的代码,但不是越多越好,应当因地制宜地调整进行防御式编程的优先级。

13、在产品代码中应当保留检查重要错误的代码和可以让程序稳妥地崩溃的代码,去掉检查细微错误的代码和可以导致程序硬性崩溃的代码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息