読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

Squeak5.0でXYPadつくった

Smalltalk Squeak

相変わらずMVCよくわかってないので、練習としてXYPad作ってみた。

www.youtube.com

MonticelloとFileTree使ってGithubにも一応あげた

とりあえずモデルとその他に分けて、モデルがビュー・コントローラに依存してなければええやろ!ということで、

  • MMTModelは位置と色を持ち、それぞれの変更と変更の通知のみを行う
  • ビュー(Morphic類)はaddDependent:でモデルを監視し、変更と表示への反映を行う

という設計にした。ああでもビューがModelの変更方法などを知ってないといけない、新しくModelを作る場合はAPIを知ってないといけないから面倒なことになるのかな……?Controllerを新しく作って挟めばいいかもしれないけど。あと色の部分をPresenter(Model?)として分けることでもっと分割できるのかな。

これぐらいなら簡単に作れるしSqueak Smalltalkめちゃめちゃに楽しい。Morphicもdependent機構もすさまじく便利だ。でも多分それらが便利だからというより、単純にメッセージングによるLateBindingとPolymorphismがストレスを極端に減らしてくれているから楽しいんだろうな。で、それらを強力にサポートするクラス機構・ブラウザ・デバッガ・インスペクタに慣れてきたのでやたら快適なプログラミングだった。

ただ一つ解決できなかったのが、ポインタを端に寄せたままモーフ全体を動かすと次のようにはみ出た表示で更新されてしまうこと。

f:id:phaendal:20151111144952p:plain

全体を動かすと出てくるので描画更新がまずいんだと思うけど、自由自在Squeakで見たようにouterBoundsいじると、そもそもの描画領域が広がってポインタが外に表示されるようになってしまう。多分Canvasの仕組みを調べないといけない。難しそうだ。

広告を非表示にする