Design Improvement (1 day)
Test Driven Development is an excellent technique for adding new code to existing applications, but working with existing code requires complementing TDD with other techniques, like identifying code smells, using refactoring tools in the IDE, and combining these techniques to improve productivity. All these activities fall under the banner of Design Improvement.
Design Improvement is a set of practices that help clean up existing code when developers need to work with it or enhance it in some way. This includes refactoring, as described by Martin Fowler in his popular book of the same title, but Design Improvement goes beyond what Fowler documented.
This one day course focuses on:
- Identifying common low level code smells in existing applications;
- Techniques to improve the design of that code;
- Leveraging the power of your IDE to correctly make changes;
- Using executable test cases as a safety net whilst improving your design;
- Discussion of more complex system design level smells;
- Approaches for large scale rework in resolving architectural issues.
Attendees will learn how to apply some specific techniques, such as:
- Converting static helper methods to well defined objects;
- Extracting methods to remove duplication;
- Introducing interfaces into a design to help improve testability.
Some experience with unit testing is expected for this course. Hands-on exercises will be done using open source Java development tools such as JUnit and JMock.
The slides for Design Improvement are available under a Creative Commons license.
