4

JAVA クラスに getter/setter を使用して 20 ~ 25 個のインスタンス変数を配置するのは、オブジェクト指向設計として適切ですか?
すべての変数は完全に独立しています。
列ファミリーを表す HBase のクラスを使用しているため、列ファミリーは行ごとに異なる数の列を持つことができます。したがって、そのクラスにはこれだけの数の変数を配置する必要があります。私は知りたいと思っています.JAVAクラスには理想的にいくつのインスタンス変数とメソッドが必要ですか?

4

5 に答える 5

7

良い OO を目指して、単一の責任を持つクラスを探すのは良いことです。したがって、関連のない変数が非常に多い場合は、クラスがやりすぎているように聞こえます。

これは「コード臭」であり、複数のクラスへのリファクタリングを検討する必要があります。

良い OO に興味を持っていただければ幸いです。Refactoring and Code Smells を読むことをお勧めします。

http://c2.com/cgi/wiki?OneResponsibilityRuleはここで相対的になります..

于 2012-06-18T06:39:03.157 に答える
4

低カップリングを保証している限り、それは問題ではありません。非常に多くの変数をクラスに割り当てると、結合度が高くなる可能性が高くなります。

また、結束力が高いという理想的な状況とは対照的に、クラスの結束力が低いことを示している可能性があります。

于 2012-06-18T06:33:12.990 に答える
2

20〜25のインスタンス変数では、制限内に収まるはずですが、20〜25は多すぎると思います。これらを異なるクラスにグループ化して、インスタンス変数の量を減らすことができます。

通常、インスタンス変数が多数あると、クラスのスコープが制限されます。これは、ソリューションを維持したいシナリオでは理想的ではありません。それを分解すると(適切に行われた場合)、一部のクラスの再利用性が向上するはずです。

于 2012-06-18T06:36:05.480 に答える
0

クラスがデータホルダーオブジェクトを表す場合は、それで問題ありません。この設計はJavaBeanで一般的です。

たとえば、会社の従業員を表すクラスがある場合、従業員が20〜25の属性を持っていれば、それはごく普通のことです。

しかし、非常に多くのインスタンス変数をビジネスメソッドで混乱させている場合、集中して集中するビジネスコンポーネントを取得できないため、将来的には困難に直面することになります。

アーキテクチャに関してより良いものにするために、継承(サブクラス)または構成(内部クラス)を検討できます。

于 2012-06-18T06:53:18.453 に答える
0

Java には、クラスが持つことができる Java インスタンス変数に制限はありません。要件に応じて、任意の数のインスタンス変数を持つことができます。

覚えておくべき重要な点は、getter メソッドと setter メソッドによってのみアクセスできるようにすることです。ユーザーは、インスタンス変数の名前でそれらに直接アクセスできないようにする必要があります。

つまり、インスタンス変数はプライベート修飾子で宣言する必要があり、それらにアクセスして操作するためのパブリック メソッドを提供する必要があります。

于 2012-06-18T06:37:34.280 に答える