[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/28 05:52 / Filesize : 228 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part51



144 名前:デフォルトの名無しさん [2009/02/12(木) 19:57:31 ]
(続き)

・続けて繰り返し呼び出された場合、プロパティは毎回異なる値を返す可能性がありますが、
 フィールドは常に同じ値を返します。System.DateTimeクラスにはNowという読み取り専用の
 クラスがあります。このプロパティは現在の日付と時間を返すため、呼び出されるたびに
 異なる値を返します。この実装は誤りで、MicrosoftでもNowをプロパティではなくメソッドに
 直せるものなら直したいと考えています。
・プロパティメソッドは副作用を持つ場合がありますが、フィールドへのアクセスには
 そのようなことはありません。言い換えると、型のユーザーがさまざまなプロパティに
 値を任意の順序で設定できて、型の動作に違いがでないようにすべきだということです。
・プロパティメソッドは追加のメモリを必要とするか、オブジェクトの状態の一部では
 ない何かへの参照を返して、そのオブジェクトを操作しても元のオブジェクトには
 何の影響もない場合があります。フィールドは常にオブジェクトの状態の一部であることが
 保証されているオブジェクトへの参照を返します。コピーを返すようなプロパティを利用すると
 開発者は混乱します。また、このような仕様がドキュメント化されていないこともあります。

 プロパティは使われすぎているというのが筆者の懸念です。プロパティとフィールドの違いを
一覧すれば、プロパティを定義する方が使いやすく、かつ開発者の混乱を招かないパターンは
非常に少ないことに気づくでしょう。プロパティによって得られるのは、少々単純化された構文
だけです。パフォーマンスの向上もない上に、コードは読みづらくなります。もし筆者が、.NET
Frameworkとコンパイラの設計に関わっていたら、プロパティを提供することはなかったでしょう。
代わりに、開発者にGetXxxやSetXxxというメソッドを必要に応じて定義させるようにしていたこと
でしょう。コンパイラが何か特殊な、単純化された構文でこれらのメソッドを呼び出せるように
したいなら、そうすればよかったのです。ですが、フィールドアクセスとは異なる構文を使って
欲しいと思います。開発者が何をしているのか(つまりメソッドを呼び出しているということを)
しっかり認識できる構文ということです。






[ 続きを読む ] / [ 携帯版 ]

全部読む 前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<228KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef