プログラマーのコードを見る視点
凝集度
モジュールは純粋に保ちましょう。
純粋なモジュールとは、独立性の高いこと、凝集度が高いものになります。
コードはモジュール化することによって管理しやすくなります。
分割したモジュールは独立性を保つことによって、コード複雑さを減少させ保守しやすくなります。
モジュールが純粋ではなく、凝集度が低いものになると以下の弊害が起きます。
- コードが理解しにくい
- コードが保守しにくい
- コードが再利用しにくい
- コードが脆弱で、変更による影響を絶えず受け続ける
一方、凝集度の高いモジュールは適度に細分化されたものなので、限定された目的に特化されています。
以下のような利点があります。
- コードの設計の明確さと理解のしやすさ
- コードの保守と拡張が容易
- コードの再利用性が高い
- モジュール間の疎結合が促進する
結合度
モジュール間の関係の密接さを表すのが結合度です。
結合度は疎結合であれば、それゆえに独立性が高いコードになるので、いいコードになります。
逆に結合が密なコードは互いに依存しあい、独立性が低いモジュールになります。また、密な結合をしているので、コードの変更があった場合、互いに影響しあう可能性があります。
モジュールはなるべく疎結合で独立性の高いものを目指しましょう。
直行性
直行性を満たすコードを作りましょう。
直行性とは、独立性と分離性が高いコードのことを言います。
直行性が高いコードは以下の利点があります。
- 生産性の向上
- 独立性が高いので変更に強くなります。また独立性が高いということは疎結合なコードになるので、コードの再利用が容易になります。
- リスクの軽減
- 分離性が高いので、コードが堅牢になります。問題があった場合、コードの変更が他で行われ手入れもその分離性のおかげで影響が少ないまたは無い状態になります。
可逆性
可逆的な決定を行いましょう。可逆とは、変更を加えても元の状態に戻ることができるという性質です。
コードにおいての仕様は、確定することはめったにありません。
プログラマが全てを制御下に置いているコードであれば良いのですが、外部の要因(仕様変更、ライセンス、セキュリティ)で変わることがあります。可逆的な決定をしておけば、これらの要因で変更になったとしても柔軟に対応が出来ます。