DTO(ローカルDTO)の効用

拙作のフレームワークでは.NET 2.0のデータバインディングの機能とAOP機能を併用してWindowsFormsコントロールとオブジェクトの双方向バインディングの実装を自動化している。

DataBidingsAttributeによる双方向データバインディングの自動化

当初、この機能はコントロールとオブジェクトのデータバインディングをシンプルに自動化すること、他のレイヤとプレゼンテーション・ビューを完全に分離するのがその主たる目的だったのだが、実際に開発フェイズに入ってみると本来の目的もさることながらテストの自動化が困難な(※)WindowsFormsにおけるテストの省力化に最も貢献していることが判った。
なるほど、項目の抜け無く作った(.NETデータバインディングが施された)DTOは、任意のForm(System.Windows.Forms.Form)とその上に配置されているコントロールのモックとして扱うことが可能であるため、テスタビリティが向上する。
実はDTOをフルに使ったプレゼンテーションレイヤは、クラス構成が冗長になるので当時の私は採用することを躊躇したのだが、こうしてみると結果オーライだったことになる。(後輩の助言もきちんと聞くもんだ)
なお、DTOによるモックはプロパティがGUIとバインドされているものの、コントロールが存在しない場合はプレーンなオブジェクトであり、より粒度の小さいテストが書けるためTDDで最もその効果を発揮することが判ったのも収穫だった。

※Windows GUIアプリケーションの開発経験があれば解ると思うが、GUIのテストの完全な自動化は不可能である。