Vialsu Editorでジェネレーションギャップパターン

Visual Editor(VE)がずいぶんと安定して使いやすくなっています。
以前紹介したJfaceのBinding Frameworkと一緒に使うと、かなり効率の良い開発が出来るレベルになってきていると思います。ただ、VEでコードを手動で追加していると、たまにコードのリバースができなくなって、最初からやりなおしということが時々あります。そこで、以下のようにジェネレーションギャップパターンを使って、開発するとツールが生成するコードと手作業のコードを分けることができるので、おすすめです。

[画面クラス]VEで作成・・・例:EmployeeFormBase
  ↑継承
[処理クラス]手動で作成・・・例:EmployeeForm

「画面クラス」はCompositeを継承して作成しまするVEで編集するクラスです。ここにはVEで生成されたコードのみで構成し、手動でコードは追加しません。「処理クラス」には手動で追加するコードを置きます。
「画面クラス」のコントロールはprivateなフィールドになっているので、protectedに変更して、「処理クラス」からアクセスできるようにしておきます。イベントハンドラの登録は「処理クラス」のコンストラクタから呼び出されるメソッド(例えばinitializeEvents)でまとめて登録します。

半手動な感じですが、処理コードと画面のコードが分かれているのでメンテナンス性が高まりつつ、VEによる開発効率の向上の恩恵を受けることが出来ます。この方式にしてから、リバースに失敗することはほとんどなくなりました。


.NET2.0ではpartialによりデザイナが作成するコードと、手動で追記する処理のコードを分けることができますが、それにちょっと似たような感じですね。