面向健壮性和正确性的构造(3)------技术篇之断言和防御性编程

今天为大家带来的是第三部分的论述——断言和防御性编程,希望与君共进步

设计一个ADT

  • 防御方式
    • 静态检查,动态检查,不可变性,等来保证消除bug
    • bug 局部化,只影响一个局部范围

what and why 断言

  • Assert  断言失败会抛出 断言异常
  • 断言优于if else
    • 1.对程序的假设起到适当的文档作用
    • 在实际运行时不会带来性能问题(实际运行时断言可被禁止)
  • 什么时候用断言
    • 内部不变量
    • 类的不变量
    • 控制流程不变量
    • 方法的 pre 条件
    • 方法的 post 条件(断言可以检查是否实现了)
  • 使用异常
    • 在开发和调试阶段使用断言,帮助发现错误和异常
    • 在发布时候可以禁用断言,避免影响性能
    • 断言不是免费的,慎用
    • 不要用断言测试外部的条件
    • 断言是可以打开关闭的

使用断言的指导

  • 异常和断言的对比
    • 用异常处理技术来处理你可以遇见的情况
    • 用断言来处理绝对不该发生的情况;断言的方式处理一定是发生了错误
    • 不要把业务逻辑(执行代码)放到断言里面去处理







  • 防御式编程
  • 保证程序在不可预见情况下继续执行
  • 最大程度的怀疑别人
  • 技术
    • 对无效的输入过程进行保护
    • 断言
    • 异常
    • 具体的错误解决技术
    • barricade隔栏、防火墙
      • 容损策略,外边随便错误,内部的东西一定是正确的
      • 外部都是公共方法,假设数据不安全,负责检查和清洗,私有方法认为接受后的数据是安全的
    • debugging aids
      • 辅助调试代码
      • 使用攻击性编程(offensive),在开发阶段让处理异常显现出来,在产品运行时候能够自我恢复。
  • 隔栏和断言的关系
    • 隔栏外部的东西能处理就处理,处理不了就抛出异常
    • 内部使用断言查看是不是自己代码的问题(这儿去看ppt 不知道对不对 7.3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值