モジュール分割と凝集度・結合度の試験問題への適用

本番問題では具体的な受渡し方やモジュール内部の処理内容から、高凝集・低結合へ改善する選択肢を選ぶ。

この単元で学ぶこと

  • 責務分離の意味と役割を説明できる
  • 引数最小化の意味と役割を説明できる
  • 共有状態削減の意味と役割を説明できる
  • 具体的なモジュール設計を高凝集・低結合の観点で改善できる

本文解説

共有変数、制御フラグ、内部領域直接参照は結合を強めやすい。無関係処理の寄せ集めは凝集度を下げる。変更理由を一つにし、必要データだけをインタフェースで渡す。

責務分離 異なる変更理由を別モジュールへ分ける。 凝集度を高める。

引数最小化 呼出し先に必要なデータだけ渡す。 結合度を低くする。

共有状態削減 グローバル変数依存を減らす。 共通結合を弱める。

制御知識削減 呼出し元が相手内部の処理モードを知り過ぎない。 制御結合を減らす。

インタフェース明確化 入出力契約を定義し内部実装を隠す。 テスト・交換をしやすくする。

内部の無関係処理を分離し、外部受渡しを必要最小限にする選択肢を探す。

巨大なCustomer構造体を渡し一項目だけ使うなら、その項目だけ渡す設計へ改善できる。

図解

高凝集・低結合への改善
責務分離と必要最小限インタフェースで独立性を高める。

重要ポイント

  • 責務分離: 異なる変更理由を別モジュールへ分ける。
  • 引数最小化: 呼出し先に必要なデータだけ渡す。
  • 共有状態削減: グローバル変数依存を減らす。
  • 制御知識削減: 呼出し元が相手内部の処理モードを知り過ぎない。
  • 問題文の「何を渡すか」と「なぜ同じモジュールか」を必ず見る。

間違えやすい点

  • 共有変数で簡単に連携できることを良設計と判断しない。
  • フラグ一個なら制御結合でないと決めつけない。
  • 分割後の依存方向を確認しない。

用語解説

責務分離
異なる変更理由を別モジュールへ分ける。
引数最小化
呼出し先に必要なデータだけ渡す。
共有状態削減
グローバル変数依存を減らす。
制御知識削減
呼出し元が相手内部の処理モードを知り過ぎない。
インタフェース明確化
入出力契約を定義し内部実装を隠す。

関連教材

参考資料

教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。

確認問題の出題・採点や学習履歴の保存にはログインが必要です。