You have been trying to learn TDD, and it’s going pretty well, but your code looks horrible. It is really hard to test. Your design skills are lacking, and trying to let TDD drive the design without having design skills can lead to a very problematic, although testable, design of your code.
I believe that separating the learning about the core skills of Unit Testing, TDD, and Design should be separated so that the learner will not feel overwhelmed. This course is a complement to the Art of Unit Testing course I am teaching. This course is specifically dealing with legacy code refactoring skills, and assumes that you already know how to write unit tests.
Assumed: You already have some experience writing unit tests.
- Design for Testability
- Refactoring patterns on hard to test legacy code
- Writing tests against refactored code
- When it does and does not make sense to refactor
- We will also take a look at open source projects and try to see how we would refactor them.