プライベートでWindows Formを触っているんだけど
薬のせいかコードに手を出せない歯がゆさからか、普段よりやや気が立っています。
肌の調子もやや後退気味です。ちょっと残念。
WPF信者から見た Windows Form
最初は「WPF VS Windows Form」とかいう見出しにしようと思ったんですが、どう頑張ってもWindows Formをdisるネタしか書けないのでこのタイトルに落ち着きました。
なぜ今更
プライベートで首を突っ込んで改修しているアプリがWindows Formを使って書かれています。私はWPFが登場する少し前にちょろっと触っただけなので右も左もよくわかっていません。UIのスクラッチを提案してみましたが、ほかにも手伝ってくれる方々と比してもWPFは劣勢だったので、現状維持して改修するという方向になりました。
わかってないなりに触ってみたら
やっぱりかなり勝手が違います。最初コードをレビューしたところそれ以前にもっと突っ込むところはあったのですが、それを差し置いてもだいぶWPFとは勝手が違います(大事なことなので2回いいました
- イベントハンドラーが肥大しがち
- WPFだとコマンドでビューモデルを経由してモデルにロジックを逃がすのが常套ですが、Formだとイベントハンドラーにべったり書いちゃってました。そこは私も気になったので極力メソッドへ逃がすように指示をしたのですが、これはFormのシステムからしてそうなりやすいものなのかもしれません。エレガントにモデルのコードに逃がすっていうのがちょっとやりにくいです。
- データバインドはおまけ
- WPFだと息を吸うようにおこなうデータバインディングですが、Formsではおまけみたいな感じでした。そこかしこでコレクションに値を追加するコードがあってため息が漏れます。なんとかデータバインディングできないか調べているのですが、既存のコードを大幅に書き換えることになりそうですし、なにせコードがビューににべったりなので費用対効果が微妙という残念さ。誰かと作業する以上、ほかの人がわからないというのは最悪な状態というのもあります。
- 固定レイアウト前提
- 昨日今日の嘆きはこれが正体です。半分くらいは私の不理解から来ていた自業自得だったのですが、それを差し置いてもこの時代固定レイアウト前提のデザインシステムはなじまないと思います。少なくとも私はほとんどのコントロールに対してデフォルトではないプロパティをマウスでぽちぽちと設定していく作業を強いられていました。XAMLみたいにスタイルを用意するのは無理だとしてもせめてコピペできないのかなこれ…
- パネルがオーバースペック
- よく使われるパネルがWPFにあるGridとDockPanelを合体させたようなものというハイスペックさ。その割にあまり有効に使われていないケースが多いようで実に嘆かわしい事態です。テーブルレイアウトが組めるパネルもあるのですが、いまいち思った通りにグリッドが定まってくれなくてやきもきしています。
- お仕着せのツールバーとかがダサい
- これが致命的ですね。スタイルとかがないらしいので、色くらいしか変えられない=おそらくXAMLでやるような摩改造されたカスタムコントロールを作る≒泥臭い作業が待っているはずです…