This project is an attempt to bring some type of functional Magic the Gathering experience to the web. This has already been done a hundred times over, with smart clients and other RIA enabled solutions, but I am doing it as a coding puzzle (and writing fun code is This will be an ASP .NET 3.5 application written in C#. Eventually, the front end will be Silverlight, once we get there.

You will be able to follow my thoughts on this project @

August 13 2008
I had started this project with the idea that I would work on it completely without any use case diagrams or any premodeling of the classes or the software as a whole. I wanted to go into it completely without any design to see if test driven development alone would allow me to define and round my structure. However, I see this is a fallacy as I have a multitude of issues currently going on and I have reached a point where I am seeing this all over the code:

1. The single responsibility principle is getting smashed
2. I have inheritance, but the liskov principle doesn't stand with my abstracted classes
3. I have classes open for modification and open for extension, I am basically all over the place

I am breaking many fundamental OOA&D principles and I will not be able to complete this project on Test Driven Development alone, I will need to refactor heavily at this point (and then rewrite all of my tests), or take this as a learning opportunity and go at this the proper way......I choose the latter.

So the August 5th Check in will be the last check in of the highly coupled and tightly grouped code. Everything after August 5th will a cleaner design. I will begin this by making some designs and checking in some designs, I am going to go ahead with this as a more academic project now, try to really get something polished out there.

Last edited Aug 13, 2008 at 2:11 PM by ikeeter, version 4