基本はクラス ライブラリ開発のデザイン ガイドラインに従うとして、それ以外の範囲で俺的な規約。
[ 俺規約 ]
フィールドの初期化はフィールドの定義時ではなく全てコンストラクタで行う。
[ 理由 ]
・フィールドの定義と一緒に初期化しても、その後コンストラクタで更に初期化される可能性があるから。(読みづらい上に、無駄。)
・あるフィールドでは定義と一緒に初期化して、あるフィールドでは定義で初期化せずコンストラクタで初期化してじゃ読みづらい。
[ 補足 ]
静的フィールドも同様に静的コンストラクタで初期化する。
静的フィールドは、定義時に初期化し、静的コンストラクタを明示的に宣言しないこと。
詳細はこちらの記事を参照。
良いと思いますよ。その規約。
そもそもフィールドの初期化は中間コードではコンストラクタの中で行われますので。
2006.09.14 20:05 URL | taka #- [ 編集 ]
おお、初コメントうれしいです。
>そもそもフィールドの初期化は中間コードではコンストラクタの中で行われますので。
そうですよね、僕が必ずコンストラクタでフィールドを初期化するようになったのも、Reflectorで逆アセしてそれに気づいたのがきっかけでした。
今では、コンストラクタのセマンティクスからしても初期化は全てコンストラクタで行った方がいいと思ってます。
2006.09.15 01:27 URL | よこけん #- [ 編集 ]
トラックバックURL↓
http://csharper.blog57.fc2.com/tb.php/19-e2c99fc7