この質問は、特に、多数のフィールドを持つオブジェクトのequals()メソッドのオーバーライドに関連しています。まず、この大きなオブジェクトは、オブジェクト指向の原則に違反せずに複数のコンポーネントに分割することはできないため、「xフィールドを超えるクラスはありません」と言っても役に立ちません。
次に、フィールドの1つが等しいかどうかを確認するのを忘れたときに、問題が発生しました。したがって、私のequalsメソッドは正しくありませんでした。それから私はリフレクションを使うことを考えました:
--code removed because it was too distracting--
この投稿の目的は、必ずしもコードをリファクタリングすることではなく(これは、私が使用しているコードでもありません)、代わりに、これが良いアイデアであるかどうかについての入力を取得することです。
長所:
- 新しいフィールドが追加されると、自動的に含まれます
- このメソッドは、30ifステートメントよりもはるかに簡潔です。
短所:
- 新しいフィールドが追加されると、それは自動的に含まれますが、これは望ましくない場合があります
- パフォーマンス:これは遅くする必要があります。プロファイラーを分割する必要はありません。
- 比較で無視する特定のフィールドをホワイトリストに登録するのは少し醜いです
何かご意見は?