電卓できた(うふ♪ のつづき。
4/25東京勉強会ではVB嫌いを公言するアテクシεπιστημηが
こともあろうにVBをネタにセッションやります。
お題は電卓。ふつーに電卓こしらえてもつまんないので、
逆ポーランド電卓に挑戦するます。
逆ポーランド電卓に必要不可欠なのがスタックです。
計算中の途中結果が格納されるスタックの内容をリアルタイムに表示し、
計算してんぞしてんぞーって様子をご覧にいれようと企んでいます。
ここでちょいとした問題があります:
● Smart UI(利口なUI)アンチパターン
層状アーキテクチャの対極をなすアンチパターン。ビジネスロジックやデータアクセスのコードが、UIのコードと一緒になってしまっている、いわばスパゲッティな状態。利口なUIと呼ぶのは、ビジネスロジックを含むすべての処理がUIの中で行なわれるから。最もやっつけで手軽なやり方がこれなので、設計を何も考ないとこの状態に陥ってしまう。
アプリケーションは電卓の実体(Model)と見てくれ(View)を分離したいのね。
スタックの実体はその見てくれ──たとえばListBox──の存在を意識せずに動かしたい。
スタックに対して何らかの操作を行うと、ListBoxがスタックの状態に同期して
自動的にその表示を更新したいわけっす。
...いいもん見つけた。
System.Collections.ObjectModel 名前空間にある
Collection(Of T) と KeyedCollection(Of TKey,TValue)。
これ使うと実体と見てくれの同期があっさり実現できるます。
可変長配列とListBoxとの分離/同期の実装例をお披露目できそう♪
Genericsをばっきばきに使いまくったきしょいVBコードをお楽しみに。
<釣り糸>
えとさー、VBで"型のエイリアス"ってできます?
Class Hoge
なんとか を String の別名とする魔法の呪文...
End Class
ってやっとけば、Hoge.なんとか が String の別名として使えて、
Dim s As Hoge.なんとか ' Dim s As String と同じ
って書ける、みたいな魔法の呪文を探してます。
</釣り糸>