[C#]自動プロパティの必要性
ちょっと私の知識不足が補われたところなので忘れないように整理します。
1.バイナリ互換主張派vsソース互換主張派
アセンブリ分割を考慮するとフィールド公開されたものを後からプロパティ公開に変えることができない、ということですね。
(追:プロパティを期待するリフレクションがフィールドを期待するそれより多いという意見をシャノンさんに頂きました。・・・深すぎて、そろそろめまいがしてきた(と中途半端に逃げる・・・))
これについては中さんのような「ソース互換主張派」がいらっしゃいます。
私もなんとなくソース互換寄りかもしれません。
むしろ今のところ遊びでC#やっていますのでDLL分割して片方だけコンパイルするって状況にはなりにくいです。
2.setter privateで読み取り専用プロパティ派vs readonlyで読み取り専用プロパティ派
読み取り専用プロパティをどう扱うかで状況は変わると思いますので対決しちゃうのは無理があるかも知れません。私はなんとなくreadonlyにしておいて、コンストラクタで初期値設定するほうが読み取り専用を強調してるようで好きです。
それと別ですが、
【A】public int Width { get; private set; }
となっているくらいならば、
【B】private int _Width;
public int Width { get { return _Width; } }
としちゃうほうが私は好きです。
というよりも「設計の最初っからリードオンリーなんだよっ」ってプロパティ作ることってそんなに多いですか??
「最初はプライベート→あとからやっぱり公開」の状況のほうが私には多かった気がします。例を挙げれば継承されたクラスのプライベートメンバーをやっぱり公開しよう、とかそういうやつです。なのでそういう意味でも【B】にするケースが私の中では多いように思います。
●めげずに結論言っちゃうぞ
前エントリーと同じですが・・・やっぱ私には自動プロパティの必要性は相当ひくいって事になりそうです。