|
|
|
|
|
by nybblesio
2122 days ago
|
|
It's a shame Kent used the words "test" and "development". Test Driven Design would have been better, but people would still misinterpret what is under "test". Yes, there's a side effect of asserting behavior in Kent's vision of TDD but it's a happy accident. What's under test is the design. Way before TDD was a thing, when I worked at IBM, we used to call this "inverted design": write the calling code first to see what the API might look like and then make it work. In the late 80s it would have been considered a massive waste to assert behavior though; we'd just implement it. Automated functional tests (from the outside in) are where the bulk of does-it-do-what-it-says-on-the-tin testing should happen. |
|
I really like the idea of this, and I very occasionally have the foresight and wherewithal to do this kind of "top-down" programming.
Maybe not surprisingly, this is how I sometimes end up with the much-criticized "Interface with only one implementer" design smell. I write the interfaces that I would like, right next to where I'm writing the calling code. The interface(s) evolve as the calling code is unfolding. Then, later, I make an impl for the Interface.
At that point I could just delete the interface and only use the concrete implementation, but... I don't. shrug.