TDD Chess Game Part 9: God Save the Queen
As always, it seems that I’ve let too much time elapse between iterations of this series. This time my excuse was worse than ever. I actually had this video ready to go last Friday or something and then the post was was queued up on Sunday, but I was too tired when I got home on Sunday night to remember to go publish it. Anyway, it’s live now.
Here’s what I accomplish in this clip:
- Implement Queen with GetMovesFrom()
- Add more common functionality to Piece base class.
Here are some lessons to take away:
- For the most part, in the last number of clips things had gone more or less as I expected. Here you got to see the value of the test suite indicating to me that I was reasoning about the code incorrectly. I didn’t realize that the GetRadial methods were returning only moves N spaces away rather than up to and including N spaces. It took some floundering to figure this out and, without red tests telling me things were going haywire, I probably would have plowed ahead for minutes or hours before I realized things weren’t working.
- Pulling up functionality into a common base class is a way to avoid duplication and make tests go green rapidly, but beware of creating a base class abstraction that’s awkward just to reuse code. If it seems awkward, it might be worth creating a class that your ancestors use. So far, the functionality in Piece seems to make sense, but I’ll keep an eye on this.
- Use Intellisense in a savvy way. When you notice a few times that what you’re expecting to happen isn’t happening, that’s a yellow (if not red) flag. Late in the video, this kept happening to me, and it turned out to be because I had spelled “radial” as “raidal” when defining a method. Typos, incorrect assumptions, etc — often these things can be revealed by the IDE not behaving as expected.
- Definitely keep track of refactorings you’d like to do in you list. Treat these as if they were no different than features you want implemented.