1

私の問題

いくつかのフィールドしかないクラスがありますが、これは比較的複雑なデータ構造を表しています。このクラスは私のプログラムの中心であり、時間が経つにつれて、それに機能を追加し、物事を混乱させていることに気付きました。(ほぼ) すべてのメソッドが内部フィールドに依存しているため、メソッドの一部を別の場所に移動する方法が思いつきませんでした。ほとんどのメソッドは互いに独立していますが。このクラスをリファクタリングして単純化し、直接実装されるメソッドの数を減らすにはどうすればよいですか?

詳しくは

問題のクラスは一種のオートマトンを表しています。それに関する情報の取得、他のオートマトンとの間でのさまざまなバイナリ操作の実行、内部に格納されている特定の情報のクエリ、ファイルへの保存など、多くの操作をサポートしています。これらの操作のほとんどすべては、クラス - 私の特定のケースでは、エッジセットベースの実装を維持していますが、他の実装も過去に使用されており、将来再び使用される可能性があります。

一般的に使用されるごく一部の基本的なヘルパー メソッドを除いて、ほとんどのメソッドは互いに独立しています。

私が使用している言語は Java ですが、静的型付けされたオブジェクト指向言語に適用できる一般的な回答を期待しています。

私が試したこと

どういうわけかそれを複数の型にリファクタリングしようとしましたが、その操作のそれぞれはそのフィールドのほとんどにアクセスする必要があり、クラスの実装を公開せずにそれを行う方法が考えられないため、これらの操作を他の場所に移行することをためらっています.

また、実際に実装から独立していると仮定すると、操作をどこに移行する必要があるのか​​もわかりません。外部ユーティリティ クラス? 抽象基本型? これに関するご意見をお待ちしております。

4

1 に答える 1

0

おそらく、クラスが保持するデータを改造して、データを直接保持する代わりに、データを保持するオブジェクトを保持できるでしょうか? 次に、そのデータを操作するメソッドを新しいクラスに移動して、元のクラスを一種のコンテナー/ディスパッチャー クラスとして残すことができます。

于 2012-04-05T14:30:02.340 に答える