zoukankan      html  css  js  c++  java
  • 第八章防御式编程(代码大全读后)

    目录

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

    8.2断言

    8.3错误处理技术

    8.4异常

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

    8.6辅助调试的代码

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

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

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

      1、检查所有来源于外部的数据的值

           企图缓冲区溢出、注入sql 注入的html或者XML代码、整数溢出以及传递给系统调用的数据

      2、检查子程序所有输入参数的值

         来自于其他子程序

     3、决定如何处理错误的输入数据

        

    二、断言

       1、建立自己的断言机制

        C++实现自己的断言:

       2、使用断言的指导建议

        用错误处理代码来处理预期会发生的状况,用断言来处理绝不应该发生的状况

      3、 避免把需要执行的代码放到断言中

       4、用断言来注解并验证前条件和后条件

      5、对于高健壮性的代码,应该先使用断言再处理错误

     有时要断言和错误一起使用如word里面开发就是如此

    三、错误处理技术

     1、返回中立值

      2、换用下一个正确的数据

      3、返回与前次相同的数据

      4、换用最接近的合法值

      5、把警告信息记录到日志文件中

      6、返回一个错误码

      7、调用错误处理子程序或对象

      8、当错误发生时显示出错消息

      9、用最妥当的方式在局部处理错误

      10、关闭程序

       健壮性与正确性

       高层次设计对错误处理方式的影响

    四、异常

       1、用异常通知程序的其他部分,发生了不可忽略的错误

       2、只在真正例外的情况下才抛出异常

       3、不能用异常来推卸责任

       4、避免在构造函数和析构函数中抛出异常,除非你在同一地方把它们捕获

       5、在恰当的抽象层次抛出异常

       6、在异常消息中加入关于导致异常发生的全部信息

       7、避免使用空catch语句;如果非得使用请写注释为什么可行

       8、了解函数库可能抛出的异常

       9、考虑创建一个集中的异常报告机制

      10、把项目中对异常的使用标准化

      11、考虑异常的替换方案

    五、隔离程序使之包容由错误造成的损害

        在输入数据时将其转换为恰当的类型

    六、辅助调试的代码

       1、 不要自动地把产品版的限制强加于开发版之上、

       2、尽早引入辅助调试的代码

       3、采用进攻式编程

       4、计划移除调试辅助的代码:使用类似ant和make这样的版本控制工具和make工具、使用内置的预处理器

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

       1、保留那些检查重要错误的代码

       2、去掉检查细微错误的代码

       3、去掉可以导致程序硬性崩溃的代码

       4、保留可以让程序稳妥地崩溃代码

       5、为你的技术支持人员记录错误信息

       6、确认留在代码中的错误消息是友好的

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

  • 相关阅读:
    UVa 11389
    uva 1418
    uva 10905 Children's Game
    uva 471
    UVA 1508
    Uva120 Stacks of Flapjacks
    UVA 10020 Minimal coverage
    UVA434
    UVa 311
    决策树算法
  • 原文地址:https://www.cnblogs.com/barnet/p/6087863.html
Copyright © 2011-2022 走看看