【软件构造】断言、异常、隔离

断言

将语义错误转变为语法错误。

例如cpp的assert,便于开发者完成错误的定位。

  • 断言主要用于开发和维护阶段,生产时不编译进产品。
  • 断言用来检查永远不应该发生的错误。
  • 错误处理用来检查程序的非正常情况。(能在开发阶段预料到)
  • 避免把执行代码(有意义的代码)放入断言中。

前条件和后条件

  • 前条件:调用方提供给被调用函数的参数。(保护传入方法的参数)
  • 后条件:与前条件相反。承诺给调用方。

通常要么断言,要么错误处理,有时也同时使用。

错误处理技术

处理我们预料得到的错误。

集中处理:比较简单。

正确性、健壮性。消费类软件更注重健壮性。

异常

把代码中的错误或异常事件传递给调用方的一种方法。

  • 不可忽略的错误
  • 真正例外的情况
  • 适当的一致的抽象
  • 避免ignore的catch
  • 集中的异常报告(logger)

隔离

程序的外部和内部被明显隔离。

  • 对外部传递的数据采用错误处理。因为外部数据不安全。
  • 内部数据采用断言。

进攻性编程

  • 确保断言终止程序
  • 确保问题被找出
  • 可以定制自己的预处理器
  • 存根:代替有效程序的简单程序(可快速移除)

防御性编程

开发阶段尽可能暴露错误
发布阶段尽可能减少错误

  • 保留检查重要错误的代码
  • 去掉检查细微错误的代码
  • 适当的地方使用防御性编程

你可能感兴趣的:(SE笔记)