|
||||
前回は、EoT(Ease of Testing: テスト容易性)によってよいオブジェクト指向
設計を再定義したい、という表明をした。今回は、二本目のナイフを抜きたい。
キーワードは、EoC(*1)(Ease of Changing)、変更容易性だ。 この記事では、 EoCの高い設計が、よいオブジェクト指向設計である。 と主張したい。設計品質の中で、「変更容易性(EoC)」を最上位と見る。 ここ20年のオブジェクト指向の最大の失敗は、「再利用性」をその最大の価値、 として説明しようとしてきたこと。そして分かったことは、再利用がその努力 コストに見合う効果がでることは極めて稀であること、また、テクノロジでは なくソーシャルな活動が再利用に効くこと、さらに、コードの再利用ではなく、 ナレッジの再利用(例えばパターン)の方が、まだ可能性があるということ (少なくとも2004年では)。 再利用性ではなく「変更容易性」に注目すべきだ。Kent Beckの "Embrace Change" であり、Bertland Meyer の "Build Software for Change" である。変更容易 性を高くしてソフトウェアを作れば、再利用性よりもコスト削減できる可能性 が出てくる。 オブジェクトを切り出すときに、「責務」とか「凝集度」と従来言われている 「概念の輪郭と中心を決めるもの」を「変更要因」と呼びかえる。外部の変更 要因をカプセル化してクラスとするのだ。1つの変更要因が、1つのクラスに閉 じるように。変更を伝播させてはならない。 また、アーキテクチャは、変更の頻度、または、変更の安定度にしたがってク ラス群の大域構造を決める活動だといえる。変更周波数を分析し、その順にパッ ケージを並べる。こうして、変更周波数の高い方が低いほうに依存するように する。MVCやBCEというアーキテクチャルな分割は、これに意味を付与したもの だが、この本質は変更要因の(時間ドメインでの)周波数だ。 大きな外部の変更は大きな内部変更で、小さな外部の変更は小さな内部変更で 済ませられること(小さな外部の変更が、大きな内部の変更にならないこと= Meyerのアーキテクチャ連続性)。この技術がオブジェクト指向設計であり、そ のためには、ソフトウェアの外部の問題構造とソフトウェア内部の解構造がダ イレクトマッピングされている必要がある。すなわち、外部の言葉で内部が設 計されており、外部の変更要因が、うまく内部の対応部分で吸収できる必要が ある。 まとめよう。EoCにしたがってソフトウェア設計を捕らえると、
|
||||
[1] EoC: Ease of Changing、変更容易性。Modifiability に替わる平鍋の造語 | ||||
つづき |