アクセス修飾子の適切な適用
-
11-09-2019 - |
質問
私は学生で、コーディング時にメンバー/型にアクセス修飾子を適切に適用する方法をさらに理解するのに役立つリソースを探しています。
私は (C# で) private、public、protected などの修飾子にどのような制限がアクセスするかを知っています。所定の位置に置きます。私自身の小さなプロジェクトをコーディングするときは、すべてを公開する傾向があります。これはカプセル化を窓の外に放り出すだけなので、まったくひどい行為であると確信しています。内部 vs. のようなものをいつ使用するのが正しいのかはわかりません。プライベート。
アクセス修飾子の適切な使用方法を理解するのに役立つ良いリソースを持っている人はいますか?
解決
この経験式の質問です。最小特権のレベルからスタートし、必要に応じてアップ推進します。
言い換えれば、すべてがプライベートにします。あなたはそれが保護または公衆に昇格する必要があることを発見するまで。時間が経つにつれて、あなたが意図したの感触を取得し、後であなたのクラスの使用方法を発見します。
他のヒント
すべてのアクセスを可能な限り制限するだけです。
- デフォルトでは非公開
- それ以外の場合は内部 (このアセンブリ内の他のクラスに公開される API の場合)
- または、アセンブリの外部に公開される API の場合は public
- または、サブクラスからのみ呼び出される場合は保護されます。
プライベートのすべてを入れて起動します。あなたが必要性を感じた場合は、右のタイプを選択する気持ちを持ってまで、それに応じて修正を変えます。
物事を簡単にするために、 TDD を使用してみてください、またはあなたも入るかもしれませんあなたはユニットテストを書くために得るより多くの悩み...
チュートリアルや教材の任意の種類はあなたに同じ指導、他の投稿はすでにあなたを与えた、すなわち1を与えるだろう。だから、「資源」から、この特定の問題に多くの有用な情報を期待してはいけません。
それを超えた主なリソースは、他の人が書いたことをコードです。 (例えばモノで、または<のhref = "HTTPを大C#プロジェクトを取る:// WWWを.icsharpcode.net /オープンソース/ SD /」のrel = 『nofollowをnoreferrer』> SharpDevelopのの)、そして彼らは、具体的にあなたに説明してきた原則に従っ方法を研究しています。また、あなたが設計する特定のクラスを持っている場合、(モノラルソースを見て、または.NETリフレクターを使用してのいずれか)システムライブラリに似たクラスを考え、それが実装されている方法を見つけることを試みることを試みます。
あなたはそれがその目的を達成するために公開する必要のあるルーチンの必要かつ十分なセットであるクラスのインターフェース、を考えることから始める必要があります。その公衆してください。他のすべてがprivateである必要があります。
私は公開されていないすべての保護をする傾向があります。彼らは私のクラスでやりたいために私のユーザーの自由を残します。彼らの問題だろう彼らのクラスが破損した場合。
あなたはクラスから継承するたびに、それはOOPの実装を隠れるくらいであっても、どのように動作するかを知っておく必要があります。あなたは、実装を隠すことができますが、ドキュメントを隠しません。