Refactor for Equal Levels of Abstraction

Refactoring is great. I’m all for coding some tests and refactoring code one small step at a time until it’s perfect. However, sometimes it’s difficult to know when to stop. For example, consider the following snippet:

This is a companion discussion topic for the original entry at