[Code Complete] CH8 Defensive Programming 防御式编程
2013-06-08 01:39
197 查看
1. 防御式编程主要就是做到“垃圾进,没有出”或者“垃圾进,提示出”而不是“垃圾进,垃圾出”。
2. 错误处理技术:做到正确性和鲁棒性的平衡,根据实际情况来定。
Ø 加强鲁棒性:返回中立值:返回0, 空字符串, NULL 等。
返回于前一次一样的数据:例如温度的测量。
用最妥当的方法局部处理。
Ø 确保正确性:
返回错误码:返回值是错误状态,设置状态变量的值。
抛出异常和设置断言。
显示错误信息。
关闭程序。
Ø 其他:
记录警告信息。记录log
调用错误处理程序,例如retry的逻辑。
3. 异常的处理
Ø 只有当真正不可能发生的情况下抛出异常或者自己处理不了,这个可能比Assert的高。Ø 不用异常推卸责任。
Ø 不在构造或者析构函数中抛出异常。
Ø 不使用空的catch,起码记录log或者打印出来。
Ø 集中处理异常,在catch中调用处理类。
4. 断言
Ø 我认为断言是一种进攻式的编程方式,用于让问题变得更大。“死的程序,比生病的好”,要在开发阶段出尽可能多的错误。Ø 在绝对不可能发生的情况下用assert。可能性比exception更小的多。
Ø Java断言: assert isTrue : “Thisvariable should never be false”;
当isTrue == false的时候打印错误信息,然后abort。
Ø 先断言,后异常。
Ø 可以用断言来实现前条件和后条件的判断。
5. 可以设置隔离的结构,让数据进入之前已经经过验证。
6. 在代码发布的时候,需要尽可能的减少调试用的代码,提高效率,但是assert是不删除的,因为assert表示极小概率出现的严重问题。
相关文章推荐
- 《Code Complete》ch.8 防御式编程
- 写在《代码大全》(Code Complete 2)热销20000册以后……
- 《代码大全 2 / Code Complete 2》at Google
- 《Code Complete 中文版 第二版》统稿流水帐
- ch8-2 UNIX系统接口
- 防御式编程(一)
- 《代码大全》 阅读笔记 第八章 防御式编程
- [Code Complete] CH12&CH13 Data Type
- ch8-4: find the permutations of a string
- 《代码大全》笔记--防御式编程
- Art of Multiprocessor Programming 答案 ch8 p95
- 读《代码大全》第2版 第 8 章,防御式编程
- Web前端-HeadFirst-CH8-字体种类
- Java网络编程 Ch8 ClientSocket
- NC与防御式编程及Java关键字assert
- 《代码大全 2 / Code Complete 2》at Google
- 《代码大全 2 / Code Complete 2》at Google
- 《Code Complete 代码大全》中用到的英文
- 防御式编程(一)
- 防御式编程