The most correct program (in terms of maintainability and evolution -- as well as mathematical correctness) approximates the most orthogonal program.
In term of modeling it with objects that contain state, this may mean having objects that have a varying degree of state (unless you choose other purer approaches).
But it's naive to think that all classes should be a noun. Everything should be an abstraction that models the solution. However, nouns that end with 'er' do tend to have a little bit of state that seem unorthogonal. But I guess my point is that that's the wrong way to look at it. Better to think about it in terms of DRY. Some 'manager' or 'controller' classes violate DRY (whereas it's rare for 'connection' classes to). But not all 'manager' or 'controller' classes do.
In term of modeling it with objects that contain state, this may mean having objects that have a varying degree of state (unless you choose other purer approaches).
But it's naive to think that all classes should be a noun. Everything should be an abstraction that models the solution. However, nouns that end with 'er' do tend to have a little bit of state that seem unorthogonal. But I guess my point is that that's the wrong way to look at it. Better to think about it in terms of DRY. Some 'manager' or 'controller' classes violate DRY (whereas it's rare for 'connection' classes to). But not all 'manager' or 'controller' classes do.