« OOAはエンティティレベルの仕様変更に弱くないか? | トップページ | デッドラインは面白い »

2004/08/29

高凝集性と低結合性

 「良いプログラムを書く」には、プログラミング言語の歴史を辿れば、「高凝集性と低結合性」にたどり着くのではなかろうか?
 下記の2個の記事を読むと、オブジェクト指向という概念よりも、モジュール分割の基準は何なのか、という根本問題が大事である気がする。

 「オブジェクト指向はどうやって身につけるのか?」記事によれば、オブジェクト指向で設計するときに重要な概念は「可換」と「隠蔽」であり、下記の特徴がある、と述べている。

・インターフェイスはオブジェクトの「可換」を実現する手段であり、結合度が低くなる。
・委譲やカプセル化はオブジェクトの「隠蔽」を実現する手段であり、凝集度が高くなる。

 「初心者を卒業した技術者のためのオブジェクト指向再入門」記事によると、結合度と凝集性は、一昔前の構造化プログラミングではすごく意識されていたらしい。

 前者の記事は、オブジェクト指向が「高凝集性と低結合性」を実現する手段を自然に担っていることを示している。
 後者の記事では、オブジェクト指向の世界では「高凝集性と低結合性」という言葉が出てこないからと言って見落としてはいけないことを述べている。

 僕個人の経験では、結合性よりも凝集性の方が重要である気がする。オブジェクト指向設計で自然に現れる「責務」という概念は、クラスの機能が高凝集性を満たすこととほぼ等価だ。だが、凝集性を意識することは、分割する機能を意識することだから、難しいと思う。
 凝集性を突き詰めると、結局、まとまった機能を持つエンティティをどのように見出し、実現させるか、に行き着く。

 システムの情報をRDBに格納する限り、エンティティをオブジェクトでいくら実現しても、最終的にはエンティティはRDBに合うようにマッピングされなければならない。
 結局、ORマッピングの問題に行き着いてしまうのではないだろうか?

|

« OOAはエンティティレベルの仕様変更に弱くないか? | トップページ | デッドラインは面白い »

日記・コラム・つぶやき」カテゴリの記事

プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: 高凝集性と低結合性:

« OOAはエンティティレベルの仕様変更に弱くないか? | トップページ | デッドラインは面白い »