2012-03-28 5 views
0

ソフトウェアの優れたプラクティスの観点から、スーパークラスとサブクラスでセッターとゲッタを使用するという考え方に頭を浮かべたいと思います。あなたの経験から 、以下の方法が適切であり、また、ソフトウェアの再利用性の良いを促進:ソフトウェアの良いプラクティス - メソッドの設定と取得

  1. スーパークラスで保護されたインスタンス変数を宣言すると、サブクラスはそれらを使用してみましょう。
  2. パブリック・ゲッター・メソッドを使用してスーパークラスのプライベート・インスタンス変数を宣言して、サブクラスがスーパークラスのゲッター・メソッドを継承できるようにします。
+2

この質問は何度も聞かれました。 – kosa

+0

および3.プライベートインスタンス+保護されたゲッター/セッター。 – assylias

答えて

1

どちらの方法でもよい。通常、サブクラスだけでなく、誰でもそれらを使用できるので、私はパブリックgetter/setterメソッドを持っています。

+0

あなたの答えはバーナードありがとうございます。 – Sinan

1

私は番号1を選択します。これは、正確にprotectedの存在が正当化される状況です。ゲッターとセッターは、関連しない別のクラスを使用するクラス用です。

+0

回答ありがとうございます。 – Sinan

3

あなたのコーディングスタイルによって異なります。あるものは、より冗長な構造化コードよりも簡潔なコードを好む。最終的な目標が相互運用性とスケーラビリティであれば、getters/setterを使用する方がより安全です。もう1つの利点は、getUsers()が実際に複数のデータ行を集計するなど、単一の操作ではなく複数の操作を実行できるgetters/setterです。このように、サブクラスで繰り返す代わりに、その操作を統合することができます。

あなたの最善の判断を使用してください。値が単純ブール値または文字列の場合は、おそらくg/sは必要ありません。クエリーに関連しているか、特定の状態やデータを繰り返し修正する場合は、g/sアプローチを使用してください。

+0

あなたの役に立つ答えをありがとう。 – Sinan

1

私は抽象クラスを作成するときに主に1を選びます。

それ以外の場合は、常に2(ゲッター/セッターの作成)を選択します。それは クラスのメンバ変数への偶発的/意図しない変更を避ける

  1. だけでなく、あなたのクラスのためのJUnitテストケースの作成について を行くとき、それはまた助ける:ので。

  2. クラスをデカップリングします。

オブジェクト指向プログラミング上の任意の良い本はゲッターとセッターを使用しての他の利点を一覧表示されます。

+0

ありがとうございました。あなたのコメントのために。 – Sinan

関連する問題