Wrapping up the sample application
In this section, we'll review some weak design spots of the example application and talk about the testing-related effects of higher-level concepts, such as modularization.
Refining the architecture
"To finish first you must first finish." | ||
--Rick Mears |
Throughout the previous chapters, you received an impression of how architectural fine-tuning goes hand in hand with the test first approach. You've experienced that a safety net of well-written tests prevents collateral damage on changes even if more substantial alterations due to the lessons learned in the course of system development should be necessary.
As a consequence, justified changes are less risky to achieve and, chances are, they get incorporated properly and consistently. This, in turn, promotes a healthy structure, freed of dull workarounds that bite back at any given opportunity. Obviously, software implemented that way is easier to maintain and faster to evolve. Overall, it improves the odds...