高凝集性と低結合性
「良いプログラムを書く」には、プログラミング言語の歴史を辿れば、「高凝集性と低結合性」にたどり着くのではなかろうか?
下記の2個の記事を読むと、オブジェクト指向という概念よりも、モジュール分割の基準は何なのか、という根本問題が大事である気がする。
「オブジェクト指向はどうやって身につけるのか?」記事によれば、オブジェクト指向で設計するときに重要な概念は「可換」と「隠蔽」であり、下記の特徴がある、と述べている。
・インターフェイスはオブジェクトの「可換」を実現する手段であり、結合度が低くなる。
・委譲やカプセル化はオブジェクトの「隠蔽」を実現する手段であり、凝集度が高くなる。
「初心者を卒業した技術者のためのオブジェクト指向再入門」記事によると、結合度と凝集性は、一昔前の構造化プログラミングではすごく意識されていたらしい。
前者の記事は、オブジェクト指向が「高凝集性と低結合性」を実現する手段を自然に担っていることを示している。
後者の記事では、オブジェクト指向の世界では「高凝集性と低結合性」という言葉が出てこないからと言って見落としてはいけないことを述べている。
僕個人の経験では、結合性よりも凝集性の方が重要である気がする。オブジェクト指向設計で自然に現れる「責務」という概念は、クラスの機能が高凝集性を満たすこととほぼ等価だ。だが、凝集性を意識することは、分割する機能を意識することだから、難しいと思う。
凝集性を突き詰めると、結局、まとまった機能を持つエンティティをどのように見出し、実現させるか、に行き着く。
システムの情報をRDBに格納する限り、エンティティをオブジェクトでいくら実現しても、最終的にはエンティティはRDBに合うようにマッピングされなければならない。
結局、ORマッピングの問題に行き着いてしまうのではないだろうか?
| 固定リンク
「日記・コラム・つぶやき」カテゴリの記事
- 考えながら書く人のためのScrivener入門の感想(2020.12.06)
- 課題は問題点をひっくり返す表現だけで良い場合もある(2020.09.28)
- ツールを使いこなせる事の重要性が増している(2020.05.28)
- ココログHTTPS化のメモ(2019.12.26)
- 「小水力発電が地域を救う」の感想(2018.04.06)
「プログラミング」カテゴリの記事
- Ruby技術者認定試験の感想(2020.05.08)
- 前処理大全の良いところ~SQLとRとPythonで対比できる(2019.07.10)
- WinSCPでトンネリングする方法のリンク(2018.09.09)
- 仕様書にもExcel脱却が求められている(2017.12.23)
- ソフトウェアの複雑性は本質的な性質であって偶有的なものではない(2017.05.05)
コメント