重複の可能性:
規則に関する質問: プロパティを使用するのではなく、いつ Getter/Setter 関数を使用しますか?
最近、ゲッターとセッターについて多くの異なる意見に出くわしたので、それを独自の質問にする必要があると考えました。
私の以前の質問は、セッターに副作用があってはならず、SetProperty
メソッドがより良い選択であると述べたコメント (後で削除されました) をすぐに受け取りました。
確かに、これはMicrosoft の意見でもあるようです。Resized
ただし、フォームWidth
やHeight
プロパティが設定されたときなど、それらのプロパティによってイベントが発生することがよくあります。OwenPはまた、「プロパティに例外をスローさせてはならない、プロパティに副作用があってはならない、順序は重要ではなく、プロパティは比較的迅速に返されるべきである」とも述べています。
しかし、Michael Stumは、setter 内でデータを検証する際に例外をスローする必要があると述べています。セッターが例外をスローしない場合、この質問に対する多くの回答が示唆するように、データを効果的に検証するにはどうすればよいでしょうか?
Microsoft のほぼすべての Control が行うように、イベントを発生させる必要がある場合はどうでしょうか? それなら、あなたのイベントに登録した人に翻弄されていませんか? ハンドラーが大量の情報を実行したり、エラーをスローしたりした場合、セッターはどうなりますか?
最後に、getter 内の遅延読み込みについてはどうでしょうか。これも以前のガイドラインに違反する可能性があります。
何を getter または setter に入れることが許容され、何をアクセサ メソッドのみに保持する必要がありますか?
編集:
MSDN の別の記事から:
およびメソッドは、通常、他のメソッドと同じです
get
。set
これらは、任意のプログラム ロジックを実行し、例外をスローし、オーバーライドし、プログラミング言語で許可されている任意の修飾子で宣言することができます。ただし、プロパティは静的にすることもできることに注意してください。プロパティが静的である場合、メソッドget
とset
メソッドで実行できることには制限があります。詳細については、プログラミング言語リファレンスを参照してください。