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.
Roy Osherove is the author of The Art Of Unit Testing, Notes to a software team leader and Beautiful Builds. He is also one of the original ALT.NET organizers. He consults and trains teams worldwide on the gentle art of unit testing, test-driven development and how to lead software teams. He frequently speaks at international conferences on these topics and others.