凝集度
凝集度は、あるコードがどれだけそのクラスの責任分担に集中しているかを示す尺度である。オブジェクト指向プログラミングでは、クラスの凝集度を高めるようにそのクラスの責任範囲を設定することが有益とされている。凝集度の高いシステムでは、コードの読みやすさと再利用の容易さが増し、複雑さが管理可能な程度に抑えられる。
凝集度は次のような場合に低下する:
クラスの責任範囲(メソッド群)に共通性がほとんどない。
メソッドが様々なことを行い、しばしば粒度の粗いデータや全く関係のないデータ群を扱う。
凝集度が低い(弱い)場合の欠点は次の通りである:
モジュール群を理解することが難しくなる。
システムの保守が難しくなる。ある論理的修正が複数のモジュールにまたがって影響する可能性が増すためである。
モジュールの再利用が難しくなる。凝集度の低いモジュールの提供するAPIには一貫性がないことが多いため。