2011-01-23 16 views
2

可能性の重複:
Private vs. Public members in practice (how important is encapsulation?)カプセル化をお勧め

それは別のクラスで使用されるため、最近、私は、私はパブリックとしてクラス変数を宣言するような状況に出くわすしてきました。私は最近、そのような変数をプライベートにして、変数の値を返すパブリックメソッドを書くべきだと私に教えてくれました。私はこれが良い練習であると言われました。私は自分のJavaの本を検索し、これについての言及を見つけることができませんでした。私の質問は、プライベートとしてできるだけ多くのクラス変数を宣言することは良い習慣ですか?

+1

確かに、私は常にそれらのすべてを* privateと宣言することから始めます。ほとんどの場合、彼らはそのように滞在します。これはより多くの執筆を意味しますが、あなたのIDEはあなたを助けます。 Threreはまた、フィールドやクラスに注釈を付けるときにアクセサを生成する "プロジェクトロンボク"も用意しています。 – maaartinus

答えて

3

はい。一般的に、すべての変数はプライベート(保護されていないプライベート)でなければならず、値を取得する方法(場合によってはのみの場合はのみ)を外部ユーザーに許可する必要があります。使用する変数は実装の詳細であり、通常は特定の方法でなければならないデータが含まれています。ゲッターとセッターは、その中にランダムなものをいくつか入れておき、あなたのオブジェクトを使用不可能にする代わりに、そのデータの責任を負い、それを検証し、同期させることができます。

唯一の例外は、の目的だけです。はデータの格納場所なので、C/C++ structのように1つのオブジェクトとして発送することができます。しかし、あなたは、データを検証し、同期させずに、そのデータをカプセル化したくないという決断を下しています...そして、あなたの心を変えることで、バイナリ互換性が損なわれます(つまり、そのクラスに触れたコードは、再コンパイルする)。小さなプライベートプロジェクトでは大したことではありません。公開フレームワーク/ APIで大規模な取引。

関連する問題