あるクラスの機能を、あまり関連のない別のクラスから使う必要が出た。そもそもその機能がそこにある必然はなかったので、PicoContainerを活かしてクラスに切り出した。久々にPicoContainerをごりごり使った。
DIコンテナを使うと機能を分離しやすくなる。分離した場合の弊害が少ない。
DIコンテナを使わないと、機能を分離したとしても、そのオブジェクトを誰がいつどうやって生成して、他のオブジェクトからはどうやって参照するのかなど、いろんなことを解決しないとかえって分かりにくくなってしまいかねない。結果的に、分離をあきらめて、巨大な、役割不明でテスト不能、メンテナンス不能のクラスができてしまったりする。
クラスやメソッドは小さければ良いという物ではない。適切な大きさであることが重要。ただ、特に心がけないとついつい大きくなってしまいがちなので「クラスは小さく」とか「メソッドは短く」と言われるんだよな。
最近は PicoContainer の Startable インタフェースもよく使う。このあたりを活用すると、各オブジェクトがよりいっそう自分の仕事に集中できるようになる。「他にやる奴がいないから、こいつにやらせとくか」ってのが減る。いいことだ。役割分担がうまく進んで、すがすがしい気分になるもんね。気分重要なのだ。