凝集度
分割(モジュール化)されたモジュールの質を判定する指針の1つ 凝集とは切っても切れない関係の要素の集まり
さまざまな関心事が混在しているモジュール
モジュールの意図の理解が難しい
ある関心事についての変更の影響が、本来は関係のない部分にも影響し、変更がやっかいで危険になる
比較的かんたんに判断できる
メソッドの数が多い
メソッドの引数が多い
メソッドの内部のロジックは、オブジェクトが内部に持つデータよりも外部から渡されたデータに強く関心を持っている可能性がある
外部から渡されるデータに強く関係するロジックは、そのデータを保持するクラスに移動する
フィールドの数が多い
メソッドによって使っているフィールドが異なれば、異なる関心事が混在している
特定のフィールドだけと関係するメソッドは、そのフィールドだけを持つ別のクラスとして分離
リファクタリングのパターンは、ほとんどが凝集度の低いモジュールを凝集度の高いモジュールに改善するためのパターン 低い状態の逆
見方によっては関心事の混在と言えることがあり、判断が難しい スキルを上げるにはモジュール分割の可能性を検討し、実際に分割の実験をして効果を検証してみる姿勢が大事 見極めるテクニック
モジュールの機能を説明する文章を書く
1つ以上の機能を持つ場合、句点を含んだり複数の動詞を含む
逐次的凝集、通信的凝集
文に時間と関係する語が含まれる場合、逐次的凝集、一時的凝集
種類
https://gyazo.com/74a31eb537075d6d7602956544c33d37