TOP

このエントリーをはてなブックマークに追加

Large Class

Large Class

Large Class(巨大なクラス)

兆候と症状 多くのフィールド、メソッド、コード行数を持つクラス。

問題の理由 通常、クラスは最初は小さいものから始まります。しかし、時間の経過と共にプログラムは成長し、肥大化していきます。 Code Smell の一つである Long Method の場合もそうですが、プログラマーは通常、その機能の新しいクラスを作成するよりも、既存のクラスに新しい機能を配置する方が負担が少ないと考えます。

対処 クラスがあまりにも多くの機能を持ってしまっている場合、それを分割することを考えてください。

  • Extract Class」は、大きなクラスの動作の一部を別のコンポーネントに分割できる場合に役立ちます。
  • Extract Subclass」は、大きなクラスの一部を異なる方法で実装できる場合や、まれに使用される場合に役立ちます。
  • Extract Interface」は、利用可能な操作と動作のリストを保持する必要がある場合に役立ちます。
  • 大きなクラスがグラフィカルインターフェイスを担当している場合、そのデータと動作の一部を別のドメインオブジェクトに移動しようとする場合があります。その際、一部のデータのコピーを2か所に保存し、データの一貫性を保つ必要がある場合があります。「Duplicate Observed Data」はこれを行う方法を提供します。

効果

  • これらのクラスのリファクタリングにより、開発者はクラスの多数の属性を覚える必要がなくなります。
  • 多くの場合、大きなクラスをパーツに分割すると、コードと機能の重複を避けられます。



書籍としてはこの辺りが参考になると思います。

リファクタリング第2版
refactoring
レガシーコード改善ガイド
legacy_code