私はJavaに25のメンバー変数を持つクラスを持っていますが、2つの「便利な」メソッド(セッター/ゲッターを除く)しかありません。何が起こっているのかわからないまま、左、右、中央に25個のグローバル変数が変更されているように感じます。これは正常ですか?クラスに合理的にカプセル化できるデータメンバーとメソッドの数を示す「グッドプラクティス」ルールはありますか?
PS:私はSOを検索しましたが、どうやらこの質問はまだ聞かれていません。
助けてくれてありがとう!
幾つか?私が知っていることではありません。
しかし、私が使用するルールは、変数を可能な限り最小のスコープに保つことです。25のメンバーすべてがオブジェクトの状態を表しているわけではない場合、すべてのメンバーがメンバーである必要はありません。
それは確かに間違っているように聞こえます。
私は、各クラスが単一の責任を持ち、他のクラスに委任して協力することを期待します。25人のメンバーがいる場合は、多くのことが起こっているように思えます。私はこのクラスをリファクタリングしようと思います:
クラス内でこれを実行し、リファクタリングをクライアントクラスから見えないようにすることが適切な場合があります。ただし、複数のセッター/ゲッターがいる場合は、そうは思われません。
ただし、リファクタリングを実行する場合は、その領域が適切な単体テストのセットでカバーされていることを確認してください。
他の回答に加えて、pmdルールのTooManyFieldsセクションを見てください。
そこには次のように述べられています
フィールドが多すぎるクラスは扱いにくくなる可能性があり、おそらく新しいオブジェクトで関連フィールドをグループ化することにより、フィールドが少なくなるように再設計される可能性があります。たとえば、個々の都市/州/郵便番号のフィールドを持つクラスは、それらを単一の住所フィールド内に駐車できます。
他のルールも便利で、pmdやcheckstyleなどのツールを使用して、コードが標準にどのように準拠しているかについてより良いアイデアを得ることができます。