2008年10月28日

昔書いた備忘録(3)

  
2002年当時に書いた備忘録の第3弾

-------------------------------------

スローする例外の型
Exception, ApplicationException, SystemException, ArgumentException など、他の例外の基底になっている例外クラスをスローしてはいけない。あまりにもあやふや過ぎる。

is-a 関係か、can-do関係か
is-a 関係ならば、クラス継承を can-do 関係ならば、interface を!

配列の参照を返すメソッド
要素がひとつもない配列を返す必要がある場合、null を返すこともできるが、長さゼロの配列を返すようにしたほうが良い。そのほうが、呼び出し側のコードがすっきりする。

Array.Copy
配列のコピー(Array.Copy メソッド)は、簡易コピーを行うので、配列の要素が参照型であれば、新しい配列も既存のオブジェクトを参照していることに注意。

ビットフラグ
ビットフラグとして利用する列挙型を定義するときは、1つ1つの識別名に対して個々の数値を明示的に設定しなければならばい。また定義した列挙型には、System.FlagsAttribute属性を適用する必要がある。
なお、C# では、System.FlagsAttribute は、Flags と省略できる。

[Flags]
public enum Action {
 Read  = 0x001,
 Write = 0x002,
 Delete = 0x004,
 Query = 0x008,
 Sync  = 0x0010
}

文字列を引数に持つメソッド
通常、StringBuilder をメソッドの引数にすることはない、通常は、String を引数にとるようにする。


Enumの識別名と数値
Enum.GetValuesメソッドを使うことで、識別子の一覧を得られる。このメソッドと、ToString メソッド(および、int へのキャスト)を使えば、値と識別名の一覧が分かる。


 

この記事へのトラックバックURL