美文网首页
2018-06-29 防御式编程

2018-06-29 防御式编程

作者: lucasdada | 来源:发表于2018-06-29 14:45 被阅读0次

保护程序免遭非法输入数据的破坏

检查所有来源于外部的数据的值
检查子程序所有输入参数的值
决定如何处理错误的输入数据

断言

用错误处理代码来处理预期会发生的状况,用断言来处理绝对不应该发生的状况
避免把需要执行的代码放到断言中
用断言来注解并验证前条件和后条件
对于高健壮性的代码,应该先使用断言再处理错误

异常

用异常通知程序的其他部分,发生了不可忽略的错误
只在真正例外的情况下才抛出异常
不能用异常来推卸责任
避免在构造函数和析构函数中抛出异常,除非你在同一个地方把他们捕获
在适当的抽象层析抛出异常

隔离程序,使之包容由错误造成的伤害

隔栏与断言的关系

隔栏的使用使得断言和错误处理有了清晰的区分。隔栏外部的程序应使用错误处理技术,在那里对数据的任何嘉定都是不安全的,而隔栏内部的程序就应该应该使用断言技术,因为传进来的数据应该已经在通过隔栏时被清理过了,如果隔栏内部的某个子程序检测到了错误的数据,那么这应该是程序里的错误而不是数据里的错误。
隔栏的使用还展示了”在架构层次上规定应该如何处理错误“的价值。规定隔栏内外的代码是一个架构层次上的决策。

尽早引入辅助调试的代码

采用进攻式编程

应该以一种这样子的方式来处理异常:在开发阶段让它显现出来,而在产品代码运行时让它能够自我恢复。

计划移除调试辅助性的代码

确定在产品代码中保留多少防御式代码

对防御式编程采取防御的姿态

把握合适的度

image.png image.png

相关文章

  • 2018-06-29 防御式编程

    保护程序免遭非法输入数据的破坏 检查所有来源于外部的数据的值检查子程序所有输入参数的值决定如何处理错误的输入数据 ...

  • 安全编程的实现方式

    借鉴文章 契约式编程与防御式编程 https://segmentfault.com/a/1190000007558...

  • 防御式编程

    最近业余时间在阅读《代码大全》,阅读“防御式编程”章节的时候非常受启发,自己之前对系统的错误处理这块也确实随意了。...

  • 防御式编程

    编写优秀的代码 代码是程序可识别的代码 代码是程序员可识别的代码 防御性编程 防御性编程(Defensive pr...

  • 防御式编程

    防御式编程 在防御式驾驶中要建立这样一种思维,那就是你永远也不能确定另一位司机将要做什么。这样才能够确保在其他人做...

  • 契约式编程与防御式编程

    1. 防御式编程 对于 “防御式编程” ,《代码大全》给我们提供了一个定义: 人类都是不安全、不值得信任的,所有的...

  • 防御式编程EAFP vs LBYL

    防御式编程EAFP vs LBYL EAFP:easier to ask forgiveness than per...

  • 防御式编程(二)

    《代码大全2》阅读随笔 错误处理技术 一些系统遇到错误后的指导建议 返回中立值; 换下一个正确数据; 返回前次相同...

  • 防御式编程(三)

    《代码大全2》阅读随笔 异常 异常是用来在代码中将错误或者异常传递给调用方的一种处理手段,通常有一些合理使用异常的...

  • 防御式编程(一)

    《代码大全2》阅读随笔 保护程序免遭非法输入数据的破坏 通常有三种常见的建议: 检查所有来源于外部的数据的值; 检...

网友评论

      本文标题:2018-06-29 防御式编程

      本文链接:https://www.haomeiwen.com/subject/dukayftx.html