ふとコードベースを見回してみると、「なんとか Manager クラス」がそこら中に溢れていることに気付く。例えば ScreenManager, AnimationManager, EntityManager, TextureManager, 等々……。 "Manager" という接尾語は、「何かを管理する」という機能を表しているものと考えられるが、この「管理する」という表現は非常に曖昧な意味を持つものように感じられる。「管理」とは、具体的には一体どのような処理を行うことを指しているのだろう?
例えばこれが "Builder" であれば、何かを生成することが目的であることが分かる。 "Pool" であれば、何かを蓄積することが目的であることが分かる。 "Registry" であれば、何かを登録することが目的であることが分かる。それでは、これら全てをまかなうクラスだとしたら? それこそ "Manager" という名前が相応しいかもしれないが、それはひとつのクラスに機能を集約し過ぎている。「ひとつのクラスが扱う問題の領域はひとつに限定する」という基本的なクラス設計の約束事を守るべきではないだろうか。
クラス名に困った果てに、SomethingManagerで 逃げていました。 気をつけます。