内容
UIとロジックを分離する
Coders at Work by Peter Seibel
p411以降
実際私はLevel 1 PostScriptインタプリタをグラフィックスなしで、グラフィックスのコードの最初の1行を書く前に書いたのです。マニュアルを開いてオペレータを見てもらえばわかりますが、グラフィックスを参照しているものはありません。グラフィックスの設計に取りかかる前に全て実装したのです。
UIとロジックを分離した良い例。
分離していない場合の問題点
UIとロジックがスクラムを組んだコードの悪い点
- 派生品を作りにくい. 再利用しにくい
- 派生品はUIが変わる
- ロジックだけ使いまわししにくい
- UIの変更にひっぱられて、同じロジックのコードがコピー生産される
- コードリーディングがしにくい
- 1つのクラスにUIとロジック両方が入っている場合、片方だけ振舞を追おうとしても読みにくい
結果として、UIとロジックが分離されていないクラスやパッケージは追加修正時にトラブルのもとになる。
実際に分離した結果
実際に分離されていないクラスを分離してみた。
- 1つのロジックを使いまわすことができるようになった
- UIだけ変更した派生品を短時間できちんと動作検証して作成できるようになった
- クラスの中身の理解を短時間で行い、クラスの変更ができた
- おかしな実装がいくつも見つかった
- 中身が読みやすくなったことで、おかしい実装が目立つようになった
データバインディング
(追記 2017/06/01)
データ・バインディングを使うべき理由
... そもそもこのバインディングを使うと、どんな良いことがあるのだろうか。それはずばりUIとロジックをきれいに分離できるという点である。