防御式编程

来源:互联网 发布:大型企业网络建设方案 编辑:程序博客网 时间:2024/05/25 21:33

防御编程的核心思想是: 子程序应该不因传入的错误数据而被破坏,哪怕由其他子程序产生的错误数据。更确切的说,必须承认程序会有问题,都需要被修改。

防御编程的最佳方式: 一开始不要再代码中引入错误,使用迭代式设计、编码前先写伪代码、写代码前先写测试用例、底层设计检查等。

一、保护程序免遭非法数据破坏

1、检查所有来源于外部的数据的值。

2、检查子程序的所有输入参数的值。

3、决定 如何处理错误的输入数据。

二 、断言的使用

1、断言主要用于开发和维护阶段。通常,断言只是在开发阶段被编译到目标程序中,而在生成产品编码时并不会编译进去。

2、用错误处理码来处理预期会发生的情况,用断言处理绝不应该发生的情况。断言可以作为可执行程序的注释

3、不要将执行代码放入断言中,当关闭断言功能时,执行功能可能失效。

4、变量数值都来源于系统外部,应该用错误处理代码来检查和处理非法数值,而不是用断言。而变量是源于可信系统的内部,而且程序执行的结果不会超出合法的假定范围值,则断言更加合适。

三、隔离程序

以防御编程为目的而进行隔离的一种方法,是把某些接口选定为安全的区域边界,对穿越安全区域边界的数据进行合法性校验。

可以让某些类处理“不干净”的数据,而让另一部分处理“干净”的数据,即可让程序中的大部分代码无需担负检查错误数据的职责。

在输入数据时将其转化为恰当的类型,输入的数据通常是字符串或者数字的形式,
这些数据可以被映射为 布尔类型的 true/fasle
有些被映射为枚举类型
这样可以减少 程序处理数据的复杂度和崩溃的可能性。

0 0