您的位置:首页 > Web前端

[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表示极小概率出现的严重问题。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: