代码可靠性监测:从容器到有界集合的实践
1. 容器方法分析
在处理容器相关操作时,有几个关键方法需要特别关注,它们对容器的状态和不变性有着重要影响。以下是这些方法的详细分析:
| 方法 | 修改的字段 | 可能破坏的不变性 |
| — | — | — |
| getAmount | 无 | 无 |
| connectTo | amount 和 group | I1, I2, I3, I4 |
| addWater | amount | I1, I4 |
为了避免不必要的工作,可以只在可能破坏不变性的方法结束时检查不变性。通过断言来实现这些检查,将不变性视为这些方法的后置条件。这种简化是安全的,因为对象状态初始时遵循不变性且被正确封装,只有公共方法可能破坏它。一旦公共方法出错,就会以断言失败的形式表现出来。
1.1 connectTo 方法的不变性检查
在 connectTo 方法结束时检查不变性有两种选择:
1. 在方法开始时,存储当前对象和其他对象的当前组(副本),以便后续正确检查所有相关对象的不变性。
2. 仅检查方法结束时获得的单个组中对象的状态。
选项 1 更安全,但类似于之前检查 connectTo 后置条件时的繁重工作。建议选择选项 2,它更实用且部分信任该方法,假设它能正确将两个现有组合并为一个,并检查不变性涵盖的其他属性。
以下是 connectTo 方法及其支持方法的代码:
超级会员免费看
订阅专栏 解锁全文
4056

被折叠的 条评论
为什么被折叠?



