On Sun, Sep 30, 2018 at 6:03 PM Steven D'Aprano
On Sun, Sep 30, 2018 at 02:50:28PM +1000, Chris Angelico wrote:
And yet all the examples I've seen have just been poor substitutes for unit tests. Can we get some examples that actually do a better job of selling contracts?
In no particular order...
(1) Distance
Don't doctests deal with this too? With the exact same downsides?
(2) Self-documenting code
Ditto
(3) The "Have you performed the *right* tests?" problem
Great if your contracts can actually be perfectly defined. Every time a weird case is mentioned, those advocating contracts (mainly Marko) give examples showing "hey, contracts can do that too", and they're just testing specifics.
(4) Inheritance
Okay, that one I 100% grant you.
(5) Unit tests and contracts are complementary, not alternatives
That I agree with.
(6) Separation of concerns: function algorithm versus error checking
Agreed, so long as you can define the contract in a way that isn't just duplicating the function's own body.
(7) You can't unit test loop invariants
Sure.
(8) Executable documentation
Granted, but there are many forms of that. Contracts are great for some situations, but I'm seeing a lot of cases where they're just plain not, yet advocates still say "use contracts, use contracts". Why? ChrisA