読者です 読者をやめる 読者になる 読者になる

オブジェクト指向らしい書き方

dev

Blog-side 10秒ルールを深く考えよう(武田ソフト)
長年の経験と独自の視点から、いつも鋭い指摘をされている武田ソフトさんのBlogより。

OOPってのは、会話するように(あるいは文章のように)プログラムを書くことだ、と、事ある毎に言い続けています。
つまらんナニガシパターンだの継承だのポリモル何とかなんていう知識を学ぶ前に、誰が読んでもわかりやすいプログラムを書く心がけ・気配りの方が、ずーっと大事。

OOPが「メッセージ交換」をトリガーとした「ステートマシン」の連携であるという基本に立ち返ってみると、”会話するように”というのはある意味示唆的であります。ここではあえてくだけた書き方をされていますが、このエントリで指摘されていることはOCP(Open-Close Principle)につながる重要な考え方だと思います。

ここでもう一つ重要なのは、「コントロールはテストしづらい。モデルはテストしやすい。」という事実。そういう意味で、コントロールにはなるべくプログラムを書くべきではありません。モデルが持つべきロジックは、モデルに書いて、モデルでUnitテストをしたい。

コントロールの責務はオブジェクト間の関連を調停することなので、コントロール単体でのテストはできないため、Mockオブジェクトやテスト支援フレームワークを利用せざるを得ません。典型的な例がServlet(および派生クラス)であり、最近の傾向としてはコントロール層はフレームワークが提供してくれる出来合いの(そして十分テストされている)ものを利用することが多いのではないでしょうか。
すべて同意できる意見ばかりではありませんが、いろいろと考えさせられるエントリでした。