I’ve been up to my eyeballs in code at work, which is both a good thing and a dramatic change of pace for me. My officemate and I have been untangling some code so that we can test it. To that end, I am indebted to the following books:
- Refactoring by Martin Fowler. I first read this book almost ten years ago. It’s only in the last month I’ve gotten heavy use out of it.
- Working Effectively With Legacy Code by Michael Feathers. I’ve read this more recently, and it accurately describes the situation I’m working in right now. It lays out remarkably useful, methodical processes for dealing with these sorts of hairy situations.
- C++ Coding Standards by Herb Sutter and Andrei Alexandrescu. This has provided the vocabulary to describe to other developers what’s wrong with our existing code. I ended up writing an email today that said, “The problem with the current design is that it violate principles #5 (‘Give one entity one cohesive responsibility’) and #34 (‘Prefer composition to inheritance’).” And the person I sent it to completely understood.
Since I got back from skiing, my head has been full of code. I suspect that will continue for a few days yet. It’s good thing I enjoy it.