今日はシゴトでのプログラミングがうまくいってスッキリ。機能追加のための設計改善がうまくいって、機能追加そのものはすごくシンプルにできた。もともとのコードがかなり苦しまぎれなものだったので、改善の余地がたくさんあったのですな。
今回も Presentation Model パターンを利用。あるウィンドウに必要な GUI モデルをビュークラスから分離。GUIとは関係ないアプリケーション固有ロジックを持つドメインオブジェクトも切り出した。ドメインオブジェクトは数種類あるんだけど、すべて同一のインタフェースでまとめて、Presentation Model から見ればどれもいっしょ。ドメインオブジェクトの種類を変えても、同一の Presentation Model が正しく GUI を制御してくれるようになった。
アプリケーション固有の仕事をするドメインロジックと、GUI部品そのものやレイアウト制御のビューロジック、ビュー用のデータモデルを提供するプレゼンテーションロジックをそれぞれのクラスに割当てる方法はかなりうまくいく。Presentation Model を導入することで、これまでMVCのMに書くべきかVに書くべきかはっきりしなかったコードを安心して配置できる。
こうして、これまでモヤモヤしていたコードが改善されると本当に気分が良い。今日の帰り道もちょっと興奮ぎみだったもんな。ちょっとヤバい人かなと我ながら思う。