http://martinfowler.com/bliki/PublicCsharpFields.html

C#に出会ったときから、プロパティの書き方が気に入った!!感動した!! C++やJavaの getX や setX なんていうオキマリゴトって、なんかアホくさくないか? obj.X = other.X って書いたほうがどれだけ自然なことか。でも、getter と setter でプロパティを渡すなんていう習慣が、今ではプログラム言語の当たり前の機能となっているんだよなあ。

C#のプロパティが好きな理由は他にもある。言語的な観点から言うと、プロパティとフィールドは一緒。だから、単に読み書きする x という値は、フィールドとして宣言できるわけ。ここではカプセル化の破壊とかなんとか気にする必要はない。今はちょっとやりたかっただけだから、後からプロパティに変更すればそれで済む話なのだ。これでアホくさいアクセサをタイプしなくて済みますわよね。

悲しいかな、そうは問屋が卸さないのだなあ(うう)。フィールドとプロパティは、プログラム上はどちらも同じようにアクセスできるんだけど、リフレクションを使うと別々のものと見なされてしまう。なーのーで、フィールドとプロパティを入れ替えると、リフレクションをサポートする様々なツールが破綻をきたすんだなあ。だから、アクセシブルなデータ値には、あのアホくさいアクセサちゅうもんを書かないといけないのでございます……はぁ。(もしくはRubyを使うかな)