[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