You may think this question is like this question asked on StackOverflow earlier. But I am trying to look at things differently.
In TDD we write tests that include different conditions, criteria, verification code. If a class passes all these tests we are good to go. It is a way of making sure that the class actually does what its supposed to do and nothing else.
If you follow Bertrand Meyers' book Object Oriented Software Construction word by word, the class itself has internal and external contracts so that it only does what its supposed to do and nothing else, No external tests required because the to code to ensure contract is followed is the part of the class.
Quick example to make things clear-
TDD-
- Create test to ensure that in all cases a value ranges from (0-100)
- Create class containing method that passes the test.
DBC-
- Create a class, create a contract for that member var to range from (0-100), set contract for contract breach, define method.
I personally like DBC.
Is there a reason why pure DBC is not so popular?? Is it the languages or tools or being Agile or is it just me who likes to have code responsible for itself?
If you think I am not thinking right, I would be more than willing to learn.