Effective C# 3rd 読書メモ 35 拡張メソッドをオーバーロードしてはいけない

拡張メソッドは以下の場合にのみ利用すべきである。 インターフェイスにデフォルト実装を追加する 閉じたジェネリック型に振る舞いを追加する 合成可能なインターフェイスを作成する 拡張メソッドは、型に機能を付け足すが、型の振る …

Effective C# 3rd 読書メモ 34 関数パラメータを使って結合度を下げる

関数パラメータを使うことで、コンポーネント間の結合度を下げることができる。この方法には、実装上のトレードオフもあるが、クラスの継承やインターフェイスの実装よりも自由度の高い拡張ポイントを設けたい場合には有用である。 関数 …

Effective C# 3rd 読書メモ 33 要求に応じて一連の要素を生成する

イテレーターメソッドは一連の要素の生成にも使用できる。その際、実際に必要になるまで要素の生成を遅延させることができる。 static IEnumerable<int> CreateSequence(int n …

Effective C# 3rd 読書メモ 32 イテレーションとAction/Predicate/Functionの間の結合度を低くする

イテレーターメソッドでは、主に2種類の仕事をする。1つは一連の要素の繰り返しで、もう1つはそれぞれの要素に基づく処理(集計等)である。これらは別々のイテレーターメソッドで扱うべきである。 これらの仕事を行うには、デリゲー …

Effective C# 3rd 読書メモ 31 合成可能なAPIを作る

イテレーターメソッドの結果を次のイテレーターメソッドにつなげるような呼び出しを行うと、イテレーターは全体で1回だけ実行される(遅延評価される)。 public static void Main(string[] args …