Chapter 7. Moving Features Between Objects
One of the most fundamental, if not the fundamental, decision in object design is deciding where to put responsibilities. I’ve been working with objects for more than a decade, but I still never get it right the first time. That used to bother me, but now I realize that I can use refactoring to change my mind in these cases.
Often I can resolve these problems simply by using Move Method (142) and Move Field (146) to move the behavior around. If I need to use both, I prefer to use Move Field (146) first and then Move Method (142).