《代码大全2》之---防御性编程

本文是《代码大全2》的读书笔记,介绍了防御性编程的重要性,包括如何防止非法输入数据破坏程序,使用断言进行自检,以及错误处理技术。强调了在开发阶段使用断言,而在产品阶段考虑异常处理,同时提倡使用辅助调试代码提高软件质量。
摘要由CSDN通过智能技术生成

第二部分 防御性编程

 

本文为《代码大全2》的读书笔记,版权归代码大全所有。^_^

本文基址:http://blog.csdn.net/cugxueyu/archive/2007/12/10/1926751.aspx

 

  防御式编程的全部重点就在于防御那些你未曾预料到的错误。

  防御式编程的主要思想:子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生错误数据。更一般地说,其核心想法是要承认程序都会有问题,都需要被修改,聪明的程序员应该根据这一点来编程序。

 

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

  对已形成产品的软件而言:不管进来的数据如何,都不应该产程垃圾数据。(必要的错误提示)

  通常有三种方法来处理进来的垃圾数据

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

    当从文件、用户、网络或其他外部接口中获取数据时,应检查所获得的数据值,以确保它在允许的范围内。

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

    数据来源于其他子程序,而不是外部接口。

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

    一旦检测到非法数据,就应该处理它。

    :防范看似微小的错误,收获可能远远超出你的想象

 

二、断言(Assertions

  断言定义:指在开发期间使用的,让程序在运行时进行自检的代码(通常可以是子程序或宏)。(对大型的复杂程序或可靠性要求极高的程序来说尤其重要)

  Java断言:两个参数—>assert(“bool表达式当判断条件为false时的错误信息”)

 

  断言检查如下这类假定

1、  输入参数和输出参数的取值处于预期的范围内。

2、  子程序开始(或结束)执行时,文件或流是处于打开(或关闭)的状态。

3、  子程序开始(或结束)执行时,文件或流的读写位置处于开头(或结尾)处。

4、  文件或流已用只读、只写或可读可写方式打开。

5、  仅用于输入的变量的值,没有被子程序所修改。

6、  指针非空

7、  传入子程序的数组或其他容器至少能容纳X个数据元素。

8、  表已经初始化,存储着真实的数据。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值