基本的に、情報隠蔽はコードの明確さに関するものです。他の誰かがあなたのコードを拡張しやすくし、クラスの内部データを操作するときに誤ってバグを作成するのを防ぐように設計されています。これは、コメント、特に指示が含まれているコメントを誰も読まないという原則に基づいています。
例:変数を更新するコードを書いていますが、Gui がその変更を反映するように確実に変更する必要があります。最も簡単な方法は、アクセサ メソッド (別名「セッター」) を追加することです。更新データが更新されます。
そのデータを公開し、Setter メソッドを介さずに何かが変数を変更した場合 (そして、これは悪口のたびに発生します)、更新が表示されない理由を見つけるために誰かが 1 時間のデバッグを費やす必要があります。データの「取得」にも同じことが当てはまりますが、それほどではありません。ヘッダー ファイルにコメントを入れることもできますが、何かがひどく、ひどくおかしくなるまで、誰もそれを読まない可能性があります。private で強制すると、実行時のバグではなく、簡単に見つけられるコンパイル時のバグとして表示されるため、間違いを犯すことができなくなります。
経験上、メンバー変数を public にして、Getter メソッドと Setter メソッドを省略したいのは、それを変更しても副作用がないことを明確にしたい場合だけです。特に、単純に 2 つの変数をペアとして保持するクラスのように、データ構造が単純な場合。
通常は副作用が必要なため、これはかなりまれに発生するはずです。また、作成しているデータ構造が非常に単純であり、作成しない場合 (ペアリングなど) は、より効率的に記述されたものが既に利用可能です。標準ライブラリで。
そうは言っても、大学で取得するような、1回限りの拡張機能のないほとんどの小さなプログラムの場合、それは何よりも「良い習慣」です。それらを手渡し、二度とコードに触れることはありません。また、リリース コードとしてではなく、データの格納方法を調べる方法としてデータ構造を記述している場合、Getter と Setter は役に立たず、学習体験の邪魔になるという良い議論があります。 .
職場や大規模なプロジェクトに着手したときだけ、さまざまな人によって書かれたオブジェクトや構造によってコードが呼び出される可能性が高くなり、これらの「リマインダー」を強化することが不可欠になります。それが一人のプロジェクトであるかどうかは、驚くほど無関係です。「今から 6 週間後のあなた」は、同僚と同じように別人であるという単純な理由からです。そして、「6 週間前の私」は怠け者であることがよくあります。
最後のポイントは、一部の人々は情報の隠蔽にかなり熱心であり、データが不必要に公開されるとイライラすることです。それらをユーモアにするのが最善です。