R
Registered User
That assumes a design process which comes strictly ahead of the real
code. With TDD, although you need the high level architecture ahead of
time, the design of the public contract often emerges as you try to
write tests which use the production class in the easiest way. Guessing
exactly what will be easy to use ahead of time is often very hard
indeed - and a waste of time, IMO, when writing tests can get you to
the end result faster, and with demonstrably working code.
The term "guessing exactly"applies more to the long odds of winning a
lottery than any sort of true application/system design. The whole
purpose of the design stage is to eliminate much if not all of the
guess work. The last D in TDD stands for development which encompasses
much more than trying to write production code. A great deal of coding
and testing can/should be done during the design process. The
validation of a particular design is the production of a functional
proof of concept. Granted more time is taken for the design phase but
development difficulties are front-loaded into the process. The
production phase is simplified as the programmers have fewer issues to
consider and fewer questions to ask.
regards
A.G.