本周内容较少,主要介绍了断言以及防御式编程。断言一般用于程序开发阶段,用以快速发现错误,而在程序正式版本中则较少使用断言。一般来说,程序员使用(输入)的数据可以使用断言检测合法性,而用户输入数据则采用异常的机制处理。防御式编程可以提高程序的健壮性,然而也要避免“过度防御”带来的程序性能下降的负面影响。
断言
1.断言用以保证程序正确性;异常用以保证程序健壮性。
2.断言只是检查程序的内部状态是否符合规约(检查程序员自己的错误),一旦出现false程序就停止。但是代码无法保证不出现外部错误,处理外部错误需要使用异常。
3.断言非常影响程序性能,正式版本的程序一般不应出现断言。
4.使用异常处理“预料到可以发生的”不正常情况;使用断言处理“绝不该发生”的情况。
5.一般,前置条件使用异常检测,后置条件使用断言检测。
如果参数来自于外部,不受自己控制(比如public方法),使用异常;如果来自于内部(比如private方法),使用断言。
6.断言和异常都可以处理同样的错误。
防御式编程的措施
1.防止错误输入
-错误输入,无输出
-错误输入,提示错误信息
-不允许错误输入
2.设置路障
使用特定的类过滤错误输入。public方法收到的外部数据都应被处理后再传入private方法。类似于代理模式。
有关Debug
1.debug是测试的后续步骤,测试发现问题,debug消除问题。
2.debug的过程:重现->诊断->修复->反思