ソフトウェアアーキテクチャ博物館AtMuseum 解法パターン解説
高凝集
| 説明 | ひとつのモジュールは単一目的であること。 モジュールには粒度があり,関数/ファイル/コンポーネントという粒度があります。 凝集度の尺度は,粒度には関係なく,内部が同一目的(同一カテゴリ)であるかどうかです。 内部の変数で判断できます関数内やファイル内で読み書きしている変数が同種であること。 ファイルの場合は、フィールド変数(クラスの場合は属性)を列挙して、 それが単一目的であれば凝集度が高い、と言えます。 コンポーネントはファイル集合なので,ファイル名が同一カテゴリであれば凝集度は高いです。 凝集度を高めるにはデータフロー分析してみる開発の初期段階で,内部の重要な変数を見つけることができます。 リファクタリングしてみる変数を中心に関数を集める部品化リファクタリングが有効です。 同一目的の変数を集めて,一つのファイルにして,その変数を使っている関数を集める方法です。 関数内部は変更せずに丸ごと移動します。 関数単位のリファクタリングも、変数に着目して,複数のファイルに分割するのですが,デグレードの危険性が伴います。 ファイル単位の凝集度が高くなれば,同じカテゴリのファイルをコンポーネントとすることも容易になります。
変数は公開しないgetter/setter/query は使わない。 c言語の場合は変数をstatic宣言して,外部に公開しないことが原則です。
部品化とはヘッダファイルと実装ファイルをぱ絵にして,同じ名称をつけることです。 クラスと同じ粒度になり,最小の管理単位になります。
|
|---|