• 代码大全阅读笔记(一)


    根据前言的推荐,个人先看的是第八章并且决定用此篇博客来单独做一下阅读总结。

    一 文章开篇提到了“垃圾进,垃圾出”的一句话,并对此做出了扩展。之后提出了三种处理进来垃圾的方法:

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

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

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

    二 对于断言,是指在开发期间使用的运行期间让程序进行自检的代码。断言为真,则程序运行正确,否则出现了意料之外的错误;由于最近在学习try-catch语句,对异常的处理的重要性有了一定的认识,设置异常检测,不只是服务程序,很大程度上还能够方便我们程序员去分析错误,加快程序进度,避免不必要的错误;“通常断言只是在开发阶段编译到目标代码中去,而在生成代码时并不编译进去,以保证系统的性能。”关于断言的一些建议:

    1用错误处理代码来处理预期会发生的状况,用断言来处理绝不应该发生的状况。此为try-catch和assert的区别

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

    3用断言来注解并验证前条件和后条件。

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

    三 对于错误处理采用的方法有:

    1 返回中立值

    2 换用下一个正确的数据

    3 返回前次相同的数据

    4换用最接近的合法值

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

    6返回一个错误码

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

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

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

    10 关闭程序

    四 在此要谈一下健壮性和正确性:

    正确性意味着永不返回不准确的结果,哪怕不返回结果 ;

    健壮性:意味着要不断尝试采取某些措施,以保证软件可以持续地运转,哪怕有时做出一些不够准确的结果;

    错误性和健壮性只能选择其中之一Exception: 在java中必须在类的接口中定义可能会抛出和捕获的异常。

    五 使用异常的一些建议:用异常通知程序的其他部分,发生了不可忽略的错误;只在真正例外的情况下才抛出异常异常弱化了封装性;不能用异常来推卸责任;避免在构造函数和析构函数中抛出异常,除非你在同一地方把它们捕获。在恰当的抽象层次剖出异常;避免使用空的catch语句

    六 隔离程序:隔栏是一种容损策略,是以防御式编程为目的进行隔离的一种方法,是吧某些接口选定为“安全”区域的边界,对穿越安全区域边界的数据进行合法性校验,并当数据非法时做出敏锐的反映。隔栏的使用使断言和错误处理有了清晰的区分。隔栏的外部使用错误处理技术,在那里对数据的任何假定都是不安全的。在隔栏的内部使用断言技术,因为传进来的数据应该已在通过隔栏时被清理过了。文章提到在开发期间应牺牲一些速度和对资源的使用,来获取一些可以让开发更顺畅的内置工具。要尽早引入辅助调试的代码,它能够在程序中始终帮助你

    七进攻式编程: 在开发阶段让它显现出来,而在产品运行时让它能够自我恢复,这种方式成为“进攻式编程”

    八章节最后谈到了要怎样使用防御式编程,保留多少防御式编程

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

    2 去掉检查细微错误的代码(但应该让它保存在日志文件里)

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

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

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

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

    最后要对防御式编程采取防御式的态度,要因地制宜的进行防御。本章主要针对程序的错误处理进行了细致化的建议,很难谈及阅读感受,但受益匪浅

  • 相关阅读:
    rest framework 认证 权限 频率
    rest framework 视图,路由
    rest framework 序列化
    10.3 Vue 路由系统
    10.4 Vue 父子传值
    10.2 Vue 环境安装
    10.1 ES6 的新增特性以及简单语法
    Django 跨域请求处理
    20190827 On Java8 第十四章 流式编程
    20190825 On Java8 第十三章 函数式编程
  • 原文地址:https://www.cnblogs.com/tianma-0/p/4456013.html
Copyright © 2020-2023  润新知