I find that when I'm refactoring, I tend to focus on little things. This method is too long. This variable should be pushed to the superclass. This class should be renamed. This code is duplicated. It's surprising how important these little things are. In fact, I find that a good design tends to come out of a focus on the small details. Each of them may seem insignificant, but when put together, they make a significant difference to the whole. Software design is all about details. If you can express those details better or make them easier to change, you have a net win. It's when you stop worrying about the little details that the design starts to fall apart.
Download