version(CONTRACTS) for contracts?
Bill Baxter
dnewsgroup at billbaxter.com
Wed Nov 8 19:06:34 PST 2006
BCS wrote:
> I think what you are trying for is what class invariants do.
>
> http://www.digitalmars.com/d/class.html#invariants
>
> == Quote from Bill Baxter (dnewsgroup at billbaxter.com)'s article
>> Is there a version statement that corresponds to whether or not
>> contracts are enabled or not?
>> I'd like to do something like
>> in { _check_data_structure_integrity() }
>> for a bunch of my methods in my class, then something like
>> version(Contracts) {
>> _check_data_structure_integrity() {
>> // do a bunch of complicated stuff here
>> // and assert if anything's messed up.
>> }
>> }
>> --bb
>
Class invariants. Indeed so!
Still I don't think that covers all use cases. If my invariant is very
slow to compute and I have some methods that are very frequently called,
then I'm not going to want to check it for every single method call. It
could make debugging way too slow. Plus, if I know these three methods
are the only three that affect this invariant then only those three
methods should trigger an invariant check.
So I think something more fine grained than class invariants is needed.
Something like version(_DContracts) would do it.
--bb
More information about the Digitalmars-d
mailing list