《Code Complete》ch.8 防御式编程
2014-06-18 15:49
99 查看
WHAT?
主要思想:子程序不应因传入参数错误而被破坏WHY?
保护程序免遭非法输入的破坏HOW?
断言
assert denominator != 0 : "denominator should not be 0"; // 启动VM时需要 -ea 参数用以启动assert功能
只用于开发、维护阶段
用错误处理代码来处理预期会发生的状况,用断言来处理绝不会发生的状况
避免把需要执行的代码放入断言中
用断言来注解并验证前条件和后条件
错误处理技术
返回中立值(当对返回结果准确性要求较低的时候)换用下一次正确的数据
返回与前次相同的数据
换用最接近的合法值
记录日志
返回错误码
设置一个状态参数的值
返回一个状态值
使用语言内建的异常机制抛出一个异常
关闭程序
健壮性与正确性
处理错误最恰当的方式要根据软件类别来确定健壮性(robustness):消费类应用软件
正确性(correctness):关乎人身安全的软件
异常机制
用异常通知程序的其它部分,发生了不可忽略的错误只在真正例外的情况下才抛出异常
不能用异常来推卸责任,能在局部处理的错误就不要抛出
避免在构造函数和析构函数中抛出异常
在恰当的抽象层次抛出异常,确保异常的抽象层次和接口的抽象层次是一致的
考虑集中的异常报告机制
异常需要包含关于异常发生的所有背景信息
隔离程序
公有方法假设数据不安全私有方法假设数据安全
相关文章推荐
- [Code Complete] CH8 Defensive Programming 防御式编程
- Code Complete ----------- (Note 1—— Laying the foundation)
- 《Code Complete 中文版 第二版》统稿流水帐
- 《代码大全 2 / Code Complete 2》at Google
- 《代码大全》学习之--防御式编程
- 像造物主一样设计--防御式编程
- [Code Complete] CH11 The Power of Variable Names 变量名的力量
- Cocos2d-x设计模式之五 :防御式编程模式
- 《Code Complete》ch.23 调试
- 防御式编程小结
- javascript的防御式编程
- 防御式编程的主要思想
- Code Complete --- (Note3 Variables)
- 《代码大全 2 / Code Complete 2》at Google
- 《Code Complete 中文版 第二版》统稿流水帐
- cc-8-防御式编程
- 《代码大全》 阅读笔记 第八章 防御式编程
- [Code Complete] CH12&CH13 Data Type
- cocos2d-x设计模式发掘之五:防御式编程模式
- 《Code Complete》ch.24 重构