代码大全阅读笔记(一)

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

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

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

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

posted @ 2015-04-25 15:32  菜鸟骑士  阅读(426)  评论(0编辑  收藏  举报