7.3Assertions and Defensive Programming断言与防御式编程

本文围绕断言与防御式编程展开。先回顾设计ADT,强调最好的防御是不引入bug及快速定位bug。接着介绍断言,包括其作用、断言内容及使用准则,还提到缺省关闭需手动打开。最后阐述防御式编程,如保护程序免受无效输入影响、设置路障及调试辅助等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

7.3Assertions and Defensive Programming断言与防御式编程

 

1.回忆:设计ADT

2.Assertions 声称

--What to Assert and What not to? 断言什么,不断言什么

--Guidelines for Using Assertions  断言的帮助

3.Defensive Programming 防御式拷贝

– Techniques for defensive programming

4.SpotBugs

 

1 Recall: Designing an ADT

 

First Defense: Make Bugs Impossible 最好的防御就是不要引入bug

Second Defense: Localize Bugs 快速定位bug,检查前置条件是防御式编程的一种典型形式

 

2 Assertions

(1) What and Why Assertions?

断言:在开发阶段的代码中嵌入,检验某些“假设”是否成立。若成立,表明程序运行正常,否则表明存在错误。

出现 AssertionError ,意味着内部某些假设被违反了

断言的方法:

assert condition;

assert condition : message;

(2) What to Assert and What not to?

Internal Invariants 内部不变量

 Rep Invariants 表示不变量 (checkRep)

 Control-Flow Invariants 控制流不变量  switch-case

 Pre-conditions of methods 方法的前置条件

 Post-conditions of methods 方法的后置条件

 

使用异常可以避免程序直接结束

 

缺省关闭断言,要记得打开 (-ea),断言非常影响性能

 

(3) Guidelines for Using Assertions

 

断言-->Correctness

错误 / 异常处理-->Robustness1

 

3 Defensive Programming

§ Protecting programs from invalid inputs

§ Assertions

§ Exceptions

§ Specific error handling techniques

§ Barricade

§ Debugging aids

(1) Protecting Programs From Invalid Inputs

对来自外部的数 据源要仔细检查,例如:文件、网络数据、用户输入等

(2) Barricade 设置路障

类的public方法 接收到的外部数据都应被认为是dirty的,需要处理干净再传递到 private方法——隔离舱

(3) Debugging Aids

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值