モジュールとインタフェース

凝縮度と結合度で少しわかってきた(つもり)なんだけど、自分なりの言葉でまとめてみよう。

モジュール・インタフェースのあるべき論

  • 機能・責任・担当毎にはっきりと分割されているのが良いモジュール。
  • モジュールのインタフェースは少なくシンプルなほどモジュール間が疎結合になり望ましい。
  • モジュールの修正があったときの理想論はインタフェースは一切変えずに呼び出し先の中身のみを変更すること。
  • その場合は呼び出し元モジュールへの影響は一切ないので修正コストは容易。
  • 逆に呼び出し元モジュールが呼び出し先モジュール内のロジックを制御する場合は一方の修正が他方に影響する。これはモジュール化が不完全なことを意味する。
  • 当たり前だがライブラリとして利用するモジュールは状態を持ってはいけない。外からは見えない状態によって挙動が変わってしまってはライブラリにならない。

結論

モジュール間の制御やインタフェースがごちゃごちゃしてきたら、モジュール設計を見直すべき。適切なデザインパターンの適用などで改善する可能性がある。