Jonathan M Davis wrote:
In the general case, it would overly complicate things to try and make an invariant not really be an invariant. If you really wanted to do that, you could use class variables which kept the state and made it so that the asserts in the invariant weren't run after a particular function call until another particular function call were made. But that strikes me as a colossally bad idea. Still, if you wanted such functionality, you _can_ get it, so I see no reason to complicate invariants just to make it easier to write what is likely bad code (or at least which is at a higher risk of being bad code).

Exactly. Having a class invariant that cheats is like painting over rust. It might look new, but the rust will shortly break through.

Reply via email to