[GSOC] regular expressions beta is here

Lutger Blijdestijn lutger.blijdestijn at gmail.com
Wed Aug 10 22:29:40 PDT 2011


Don wrote:

> bearophile wrote:
>> Contracts don't replace unittests, they complement each other.
>> 
>> 
>>> They are nice but have little value over plain assert
>>> _unless_ we are talking about classes and _inheritance_, which isn't the
>>> case here.
>> 
>> It's easy to forget to test the output of a function, the "out" contracts
>> help here. In structs the invariant helps you avoid forgetting to call
>> manually a sanity test function every time you come in and out of a
>> method.
> 
> You're conflating a couple of things here. Invariants are tremendously
> helpful for structs as well as classes.
> "out" contracts seem to be almost useless, unless you have a theorem
> prover. The reason is, that they test nothing apart from the function
> they are attached to, and it's much better to do that with unittesting.
> They have very little in common with 'in' contracts.
> 
> I think that EVERY struct and class in Phobos should have an invariant
> (except for something like Complex, where there are no invalid values).
> But I don't think 'out' contracts would add much value at all.

What about out contracts on interfaces in a library (where you use the 
library by implementing them).



More information about the Digitalmars-d mailing list