Effective C# 3rd 読書メモ 45 メソッドの契約が満たされない場合に例外を使用する

メソッドが定められた振る舞いを行うことができない場合、例外によって失敗を報告すべきである。エラーコードの戻り値はたやすく無視されるし、エラーコードのチェックや伝播は正常系のコードを汚染し、中核となるロジックをわかりづらく …

Effective C# 3rd 読書メモ 44 バインドされた変数を書き換えてはいけない

以下のコードで、sequence()デリゲートはindex変数をキャプチャしている。 public static void Main(string[] args) { var index = 0; Func<IEn …

Effective C# 3rd 読書メモ 43 Single()とFirst()によってクエリの意味をわかりやすくする

Single()はただ1つの要素だけを返す。要素が存在しなかったり、複数の要素が存在した場合には例外が投げられる。必ず1つ存在するものを取得するにはSingle()を使うのが良い。 0個または1個の要素が返る場合は、Si …

Effective C# 3rd 読書メモ 42 IEnumerableとIQueryableのデータソースを区別する

IQueryableとIEnumerableはとても似たAPIシグネチャをもっている。また、IQueryableはIEnumerableを継承している。この2つのインターフェイスは原則として交換可能である。一方、一連の要 …

Effective C# 3rd 読書メモ 41 高価なリソースのキャプチャを避ける

クロージャとキャプチャされた変数は、変数のスコープの基本原則の例外である。クロージャは境界づけられた変数を格納したオブジェクトを作り出す。これらの変数の生存期間は驚くほど長いことがある。 この挙動は、変数がメモリを消費し …