《代码大全2》-读书笔记20180713
1、防御式编程
1.主要思想:子程序应该不因传入错误数据而被破坏,哪怕是由其他子程序产生的错误数据;
2.处理办法: 断言/错误处理程序
检查外部数据;
检查输入参数;
处理错误的输入数据;
3.确定在发布版本的代码中保留多少防御式代码。
保留那些检查重要错误的代码;
去掉检查细微错误的代码;
去掉可以导致程序硬性崩溃的代码;
保留可以让程序稳妥地崩溃的代码;
为你的技术人员记录错误信息;
确认留在代码中的错误信息是友好的;
2、断言
1.定义:在开发期间使用的、让程序运行时进行自检的代码,用于处理代码中 不应该发生的错误;
2.2个参数:断言为真时的布尔表达式 + 断言为假时需要打印的错误信息;
3.好处:可以帮助查清相互矛盾的假定、预料之外的情况以及传给子程序的错误数据等;
4.断言主要用于开发和维护阶段,在生成产品代码时,可以将断言去掉;
5.对于程序中可能出错的地方,可以使用断言/错误处理程序;
3、错误处理程序
1.处理预料中可能要发生的错误,在程序的正确性与健壮性间平衡;
2.方法:返回中立值、换用下一个正确的数据、返回与前次相同的数据、换用最接近的合法值、把警告信息记录到日志文件中、返回一个错误码、调用错误处理子程序或对象、当错误发生时显示出错信息、用最妥当的方式在局部处理错误、关闭程序。
3.原则:人身安全攸关的软件更倾向正确性,消费类应用软件理注重健壮性;
4.统一错误处理程序:记录错误编码和描述信息;
4、异常
1.定义:把代码中的错误或异常事件传递给调用方代码的一种特殊手段。
2.异常的基本结构:子程序通过throw抛出一个异常,再被调用链上层其他子程序的try-catch语句捕获。
5、隔离程序,使之包容由错误造成的损害。
1.对穿越安全区域边界的数据进行合法性校验。
2.在输入数据时,将其转换成恰当的类型。
3.隔栏外部的程序使用错误处理技术,隔栏内部的程序使用断言技术。
6、辅助调试的代码
1.不要自动地把发布版的限制强加于开发版之上;
2.应该在开发期间使用一些内置工具,如eslint/webpack等,提高开发效率和错误诊断提示。
3.尽早引入辅助调试的代码。
4.计划移除调试辅助的代码。
使用类似ant和make这样的版本控制工具和make工具
使用内置的预处理器
编写你自己的预处理器
使用调试存根
7、进攻式编程
1.定义:在开发阶段让异常显现出来,而在产品代码运行时让它能够自我恢复。