TOP

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

Data Class

Data Class(データクラス)

兆候と症状
データクラスは、フィールドとそれらへのアクセサメソッド(getter/setter)のみを含むクラスを指します。これらは、他のクラスで使用される単なるデータのコンテナです。これらのクラスには追加機能は含まれておらず、所有するデータを独立して操作することはできません。

問題の理由
新しく作成されたクラスに含まれるパブリックフィールドの数が少ないことは普通のことです(getter/setterが少数の場合もあります)。しかし、オブジェクトの真の力は、オブジェクト内のデータに動作タイプや操作を含めることができることです。

対処

  • クラスにパブリックフィールドが含まれる場合は、「Encapsulate Field」を使用して直接アクセスできないようにし、getter/setterを介してのみデータにアクセスできるようにしましょう。
  • コレクション(配列など)に格納されているデータには、「Encapsulate Collection」を使用します。
  • データクラスを使用しているクライアントコードを確認します。その中に、データクラス自体に配置されるべき機能があった場合、「Move Method」と「Extract Method」を使って、その機能をデータクラスに移行します。

よく考え抜かれたメソッドでクラスがいっぱいになったら、クラスデータへの過度に広範なアクセスを可能にするデータアクセスの古いメソッドを削除することができます。これには、「Remove Setting Method」と「Hide Method」が役立つ場合があります。

効果

  • コードが理解しやすくなり、構成が改善されます。特定のデータに対する操作は、コード全体で無計画に行われるのではなく、単一の場所に収集されるようになりますた。
  • クライアントコードの重複を見つけるのに役立ちます。


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

リファクタリング第2版
refactoring

レガシーコード改善ガイド
legacy_code