モジュール分割と凝集度・結合度の試験問題への適用
本番問題では具体的な受渡し方やモジュール内部の処理内容から、高凝集・低結合へ改善する選択肢を選ぶ。
この単元で学ぶこと
- 責務分離の意味と役割を説明できる
- 引数最小化の意味と役割を説明できる
- 共有状態削減の意味と役割を説明できる
- 具体的なモジュール設計を高凝集・低結合の観点で改善できる
本文解説
共有変数、制御フラグ、内部領域直接参照は結合を強めやすい。無関係処理の寄せ集めは凝集度を下げる。変更理由を一つにし、必要データだけをインタフェースで渡す。
責務分離 異なる変更理由を別モジュールへ分ける。 凝集度を高める。
引数最小化 呼出し先に必要なデータだけ渡す。 結合度を低くする。
共有状態削減 グローバル変数依存を減らす。 共通結合を弱める。
制御知識削減 呼出し元が相手内部の処理モードを知り過ぎない。 制御結合を減らす。
インタフェース明確化 入出力契約を定義し内部実装を隠す。 テスト・交換をしやすくする。
内部の無関係処理を分離し、外部受渡しを必要最小限にする選択肢を探す。
巨大なCustomer構造体を渡し一項目だけ使うなら、その項目だけ渡す設計へ改善できる。
図解
重要ポイント
- 責務分離: 異なる変更理由を別モジュールへ分ける。
- 引数最小化: 呼出し先に必要なデータだけ渡す。
- 共有状態削減: グローバル変数依存を減らす。
- 制御知識削減: 呼出し元が相手内部の処理モードを知り過ぎない。
- 問題文の「何を渡すか」と「なぜ同じモジュールか」を必ず見る。
間違えやすい点
- 共有変数で簡単に連携できることを良設計と判断しない。
- フラグ一個なら制御結合でないと決めつけない。
- 分割後の依存方向を確認しない。
用語解説
- 責務分離
- 異なる変更理由を別モジュールへ分ける。
- 引数最小化
- 呼出し先に必要なデータだけ渡す。
- 共有状態削減
- グローバル変数依存を減らす。
- 制御知識削減
- 呼出し元が相手内部の処理モードを知り過ぎない。
- インタフェース明確化
- 入出力契約を定義し内部実装を隠す。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
確認問題の出題・採点や学習履歴の保存にはログインが必要です。