《代码大全》学习之--防御式编程

    防御式编程的核心思想是:子程序不应该因为错误数据而被破坏,哪怕是由其它子程序所产生的错误数据。

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

    (1)检查所有来源于外部的数据值:确保外部数据合法,在允许的范围内。

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

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

    2.断言

    断言(Assertion)是在开发期间使用的,让程序在运行时进行自检的代码(通常是一个子程序或者宏)。断言为真,表示程序运行正常,断言为假,则意味着它已经在代码之中发现了意料之外的错误。

    断言可以用来处理如下的假定:

    a.输入参数或者输出参数的取值处于预期的范围内:这种处理很有必要,也是最常见的方式

    b.子程序开始(或者结束)执行时,文件或流的读写位置处于开头或者结尾处

    c.子程序开始(或者结束)执行时,文件或流是处于打开(或关闭)的状态

    d.文件或流已用只读、只写或可读可写方式打开

    e.仅用于输入的变量的值没有被子程序所修改

    f.指针非空:这种处理平时用的也比较多

    g.传入子程序的数组或其它容器至少能容纳X个数据元素

    h.表已经初始化,存储着真实的数值

    i.子程序开始(或结束)执行时,某个容器是空的(或满的)

    j.一个经过高度优化的复杂子程序的运算结果和相对缓慢但代码清晰的子程序的运算结果一致

    使用断言的指导性建议:

    (1)用错误处理代码来处理预期会发生的状况,用断言来处理绝不应该发生的状况:错误处理主要用来处理有害的数据输入,它是可以预期的;断言主要是用来检查代码本身的问题(bug),它是不应该发生的状况。

    (2)避免把需要执行的代码放到断言中

    (3)用断言来注解并验证先条件和后条件

    (4)对于高健壮性的代码,应该先使用断言再处理错误(这一条用得很少

    3.错误处理技术

    一段断言用来处理代码中不应发生的错误,错误处理代码用来处理预料中可能发生的错误。

    常用的错误处理技术:

    (1)返回中立值

    (2)换用下一个正确的数据

    (3)返回与前次相同的数据

    (4)换用最接近的合法值

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

    (6)返回一个错误的代码:(a 设置一个状态变量的值,b 用状态值作为函数的返回值 c 用语言内建的异常机制抛出一个异常)

    (7)调用错误处理子程序或对象(详见《代码大全》196页)

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

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

    (10)关闭程序(在一些重要的场合,关闭程序比给出错误的数据更好)

    4.异常

    异常是把代码中的错误或异常事件传递给调用方代码的一种特殊手段。异常用得好的话可以降低复杂度,但如果用得不好的话会使代码变得几乎无法理解。

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

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

    (3)不能用异常来推卸责任

    (4)避免在构造函数和析构函数中抛出异常,除非你在同一地方将他们捕获

    (5)在异常消息中加入关于导致异常发生的全部信息

 

    需要注意的是,在开发版本中可以牺牲一些速度和对资源的使用,来换取一些让开发更顺利的内置工具。

   

转载于:https://www.cnblogs.com/superhuake/archive/2011/09/26/2192219.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
1. 智慧监狱概述 智慧监狱的建设背景基于监狱信息化的发展历程,从最初的数字化监狱到信息化监狱,最终发展到智慧监狱。智慧监狱强调管理的精细化、监管的一体化、改造的科学化以及办公的无纸化。政策上,自2017年以来,司法部连续发布了多项指导性文件,推动智慧监狱的建设。 2. 内在需求与挑战 智慧监狱的内在需求包括数据应用与共享的不足、安防系统的单一功能、IT架构的复杂性、信息安全建设的薄弱以及IT运维的人工依赖。这些挑战要求监狱系统进行改革,以实现数据的深度利用和业务的智能化。 3. 技术架构与设计 智慧监狱的技术架构包括统一门户、信息安全、综合运维、安防集成平台和大数据平台。设计上,智慧监狱采用云计算、物联网、大数据和人工智能等技术,实现资源的动态分配、业务的快速部署和安全的主动防护。 4. 数据治理与应用 监狱数据应用现状面临数据分散和共享不足的问题。智慧监狱通过构建数据共享交换体系、数据治理工具及服务,以及基于数据仓库的数据分析模型,提升了数据的利用效率和决策支持能力。 5. 安全与运维 智慧监狱的信息安全建设涵盖了大数据应用、安全管理区、业务区等多个层面,确保了数据的安全和系统的稳定运行。同时,综合运维平台的建立,实现了IT系统的统一管理和自动化运维,提高了运维效率和系统的可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值