| 前置 | 调用方必须满足,否则行为未定义 |
|---|---|
| 后置 | 返回时必须成立的保证 |
| 不变量 | 对象生命周期内始终成立 |
约束示例
约束示例
transfer(from, to, amount):
前置:from != to, amount > 0
后置:from.balance + to.balance 不变
不变量:任一账户 balance >= 0把约束写成可检查的三元组:前置条件(调用方义务)、后置条件(实现方承诺)、不变量(对象恒真约束);写进测试与断言后,重构与扩展时错误更早暴露。
| 前置 | 调用方必须满足,否则行为未定义 |
|---|---|
| 后置 | 返回时必须成立的保证 |
| 不变量 | 对象生命周期内始终成立 |
transfer(from, to, amount):
前置:from != to, amount > 0
后置:from.balance + to.balance 不变
不变量:任一账户 balance >= 0