zoukankan      html  css  js  c++  java
  • 代码大全阅读笔记(一)

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

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

    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 确认留在代码中的错误消息是友好的

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

  • 相关阅读:
    Mysql数据优化--DBA梳理珍藏篇
    Spring缓存注解@Cacheable
    Spring常用知识点
    谈一谈对MySQL InnoDB的认识及数据库事物处理的隔离级别
    MySQL主从复制的实现过程
    List 与 数组 互转
    位运算实现小正整数乘法
    最大的K个数
    Java 编码与字符(2)
    JSP工作原理
  • 原文地址:https://www.cnblogs.com/tianma-0/p/4456013.html
Copyright © 2011-2022 走看看