> Consider refactoring before taking a step to code rewriting:
Refactoring is only an option for anything but a trivial code base if a suite of automated tests have already been written.
The article makes no mention of tests. I suspect the reason is that there were none. Refactoring would most likely have been impossible until an automated test suite had been written.
Many developers are confused about the purpose of an automated test suite. It's not to make your designs better. It's to allow you to refactor the spaghetti that will inevitably arise.