1

私はJavaに25のメンバー変数を持つクラスを持っていますが、2つの「便利な」メソッド(セッター/ゲッターを除く)しかありません。何が起こっているのかわからないまま、左、右、中央に25個のグローバル変数が変更されているように感じます。これは正常ですか?クラスに合理的にカプセル化できるデータメンバーとメソッドの数を示す「グッドプラクティス」ルールはありますか?

PS:私はSOを検索しましたが、どうやらこの質問はまだ聞かれていません。

助けてくれてありがとう!

4

3 に答える 3

2

幾つか?私が知っていることではありません。

しかし、私が使用するルールは、変数を可能な限り最小のスコープに保つことです。25のメンバーすべてがオブジェクトの状態を表しているわけではない場合、すべてのメンバーがメンバーである必要はありません。

于 2012-08-06T11:27:04.030 に答える
1

それは確かに間違っているように聞こえます。

私は、各クラスが単一の責任を持ち、他のクラスに委任して協力することを期待します。25人のメンバーがいる場合は、多くのことが起こっているように思えます。私はこのクラスをリファクタリングしようと思います:

  1. 何が起こっているか(どのような操作/アクションが実行されているか)を特定します
  2. それらのタスクに関与するメンバーのグループを特定する
  3. これらをその1つの役割を実行するオブジェクトに抽出し、必要に応じてこれらのオブジェクトに委任します

クラス内でこれを実行し、リファクタリングをクライアントクラスから見えないようにすることが適切な場合があります。ただし、複数のセッター/ゲッターがいる場合は、そうは思われません。

ただし、リファクタリングを実行する場合は、その領域が適切な単体テストのセットでカバーされていることを確認してください。

于 2012-08-06T11:25:34.053 に答える
0

他の回答に加えて、pmdルールのTooManyFieldsセクションを見てください。

そこには次のように述べられています

フィールドが多すぎるクラスは扱いにくくなる可能性があり、おそらく新しいオブジェクトで関連フィールドをグループ化することにより、フィールドが少なくなるように再設計される可能性があります。たとえば、個々の都市/州/郵便番号のフィールドを持つクラスは、それらを単一の住所フィールド内に駐車できます。

他のルールも便利で、pmdcheckstyleなどのツールを使用して、コードが標準にどのように準拠しているかについてより良いアイデアを得ることができます。

于 2012-08-06T11:37:18.450 に答える