- 143 名前:デフォルトの名無しさん [2009/02/12(木) 19:56:47 ]
- プロパティに関しては否定的な意見もあるけどね。
以下は プログラミング.NET Framework (Jeffrey Richter著, Microsoft Press出版) から あくまで参考程度に、こういう見解もあるということで。 9.1.1 プロパティを賢く設計する 個人的には、筆者はプロパティが好きではありません。Microsoft.NET Framework やプログラミング言語でのサポートがなければよかったと思っています。理由は、 プロパティはメソッドであるのにフィールドのように見えるからです。この問題は 大きな混乱を招いてきています。プログラマがフィールドにアクセスしているコードを 見て仮定してしまうことが、プロパティにおいては誤っていることがあります。例えば、 次のようなことです。 ・プロパティは読み取り専用または書き込み専用にできますが、 フィールドは常に読み書きできます。プロパティを定義するときはgetとset のアクセサメソッドを両方提供するのが最善策です。 ・プロパティのメソッドは例外をスローすることがあります。 フィールドは例外をスローしません。 ・プロパティはメソッドのoutやrefの引数には渡せません。フィールドは渡せます。 ・プロパティのメソッドは実行に長い時間がかかることがありますが、フィールドへの アクセスはいつもすぐに実行が完了します。プロパティを利用する一般的な理由は、 スレッドの同期を取ることです。これはスレッドを永遠に止めてしまうかもしれない ことを意味します。したがって、スレッドの同期が必要な時にプロパティを使うべきでは ありません。このような状況ではメソッドを利用するほうが好ましいでしょう。また、 クラスがリモートからアクセスできる(たとえばクラスがSystem.MarshalByRefObjectから 派生している)場合、プロパティメソッドの呼び出しはとても遅くなることがあります。 したがって、プロパティよりメソッドの方が好ましいでしょう。筆者の私見ですが、 MarshalByRefObjectから派生しているクラスではプロパティは使うべきではありません。 (続く)
|

|