Chess TDD 59: King (Not) Moving into Check
This episode was relatively short and sweet. Things actually went well, which is surprising to me somehow, particularly given the length of time between episodes. In this episode I used previously implemented code to stop the king from being able to move into check. I’m not positive, but off the top, this might be the last move consideration to implement. I think my remaining cards are about testing activities and design considerations. (Though, famous last words)
What I accomplish in this clip:
- Disallow king from moving into check.
- Clean a bit of cruft out of an old unit test class.
Here are some lessons to take away:
- Tech debt can happen even in a code base well covered by tests. It manifests itself in a variety of ways, not the least of which is making it harder than it should be to get your bearings. That’s on display a bit now in some of these episodes (though, I’d argue there’s no crippling debt, you can still see the effect)
- If you see commented out code, there’s only one thing to do with it, in my opinion: delete it without a second thought. I mean, it’s not doing any good. If you uncomment it and it even compiles, then… good? Do you then leave it in, even though it’s dead? Do you, for some reason, try to use it? I mean, what good comes from it? And, if you’re inclined to leave it, why do that? Isn’t that what source control is for?
- Things like what to name stuff and when to extract constants are no exact science. Bounce the question off of others and poll for opinions. I suggest making it a practice not to be too uptight about such things, or programming collaboratively will wind up being a high-stress, neurotic endeavor.
- When you get to the end of a complex chain of business rules applying to one part of the application, it may be the case that “the simplest thing that could work to get the tests all green” is actually rather complex. This is (1) possibly unavoidable and/or (2) possibly a smell that you need to break the business logic apart. In my case here, I’d say a little from each column. The rules of chess are fairly complex, but it’s no secret that we’re carrying around some of the aforementioned tech debt here.
It would be nice to have the link to the code you wrote in every post so I could take a peek at it.
Is this what you’re looking for…? The diff? https://github.com/erikdietrich/ChessTDD/commit/997ddf92ecc9d69db347b7ae65bbc68840b8a3f5