単なるアイデアのメモです。
なので、内容的には全くの無保証です。
テスト駆動開発で要求されること §
テスト駆動開発を行う際には、個々のクラスの独立性を高め、できるだけ単体でテスト可能にすることが必要とされます。つまり、クラス間の依存性を低めることが必要とされます。
genericsという機能 §
一方、.NET Framework 2.0でC#やVisual Basic.NETなどに導入されるgenericsは、実際にインスタンス変数等が宣言されるまで具体的な型を指定しないクラスの記述を可能にします。
通常、genericsは、不特定多数の型を扱うクラスを記述するために使います。
不特定多数の型を対象としないgenerics §
しかし、特定の1つの型のみで使用されることを前提としたクラスをgenericsを用いて書くことは不可能ではありません。
その場合、クラス(参照クラス)とクラス(被参照クラス)の関係は、それらのクラスの中には記述されず、それらのクラスを利用するクラス(利用者クラス)内に記述されることになります。つまり、クラス(参照クラス)のテストにおいて、クラス(被参照クラス)を無関係とすることができます。これは、テスト駆動開発には有利な特徴となります。
課題 §
コレクション的なクラスならこの方法で実現できますが、参照しているクラスの機能を使っていると、この方法では上手く分離できない可能性があります。
でもまあ、上手く分離できるケースがあるというだけでも価値はあるかな?
いずれ何かの機会に実際に試してみよう……。