Learning about the refactoring process
In general, the process of refactoring existing code is similar to writing code in the first place. In many cases, it's even easier. Assuming you've followed the advice in Chapter 11, Testing to Ensure Your Code Works, you already have a good set of tests for the behavior you are refactoring. If you've inherited code without tests or with tests that don't give you good confidence that they will catch bugs that can be introduced during refactoring, before you start refactoring, the goal should be to get the tests in a good enough shape that you are comfortable that they will catch you if you fall. If you are in a position where you refactor some code and run the tests and everything passes, and your first thought is, "Maybe I am missing a case where this fails," then you probably don't have enough tests. You can add tests at that point, but that's not the best time. What if you add the tests after refactoring...