ソフトウェアアーキテクチャ博物館AtMuseum 解法パターン解説


高凝集

説明

ひとつのモジュールは単一目的であること。

モジュールには粒度があり,関数/ファイル/コンポーネントという粒度があります。

凝集度の尺度は,粒度には関係なく,内部が同一目的(同一カテゴリ)であるかどうかです。

内部の変数で判断できます

関数内やファイル内で読み書きしている変数が同種であること。

ファイルの場合は、フィールド変数(クラスの場合は属性)を列挙して、

それが単一目的であれば凝集度が高い、と言えます。

コンポーネントはファイル集合なので,ファイル名が同一カテゴリであれば凝集度は高いです。

凝集度を高めるには

データフロー分析してみる

開発の初期段階で,内部の重要な変数を見つけることができます。

リファクタリングしてみる

変数を中心に関数を集める部品化リファクタリングが有効です。

同一目的の変数を集めて,一つのファイルにして,その変数を使っている関数を集める方法です。

関数内部は変更せずに丸ごと移動します。

関数単位のリファクタリングも、変数に着目して,複数のファイルに分割するのですが,デグレードの危険性が伴います。

ファイル単位の凝集度が高くなれば,同じカテゴリのファイルをコンポーネントとすることも容易になります。

 

変数は公開しない

getter/setter/query は使わない。

c言語の場合は変数をstatic宣言して,外部に公開しないことが原則です。

 

部品化とは

ヘッダファイルと実装ファイルをぱ絵にして,同じ名称をつけることです。

クラスと同じ粒度になり,最小の管理単位になります。