今の時代、GUIの状態は富豪的手法で更新したい

僕は十数年前、PC-9801でゲーム作りに熱中していました。PC-9801はVRAMが非常に低速だったので、ゲーム開発の労力の半分以上は、いかに画面の差分書き換えを工夫するかに費やされていました。その後PCのスペックが向上して、ゲーム画面は全書き換えが当たり前になりました。

一方、今の時代にあっても、せせこましい「差分更新」的な手法が受け継がれているのが、リッチクライアントのGUIです。モデルの一部分に変更があったとき、その変更による影響範囲のUI「だけ」を状態更新することが常識になっています。これはバグの温床になります。なぜなら、GUIが複雑化すると、変更の影響範囲を正確に見定めることが難しくなり、UIの更新漏れが発生する可能性が高まるからです。

富豪的な発想からすれば、たとえモデルの変更がごく部分的なものだったとしても、モデル全体を再読み込みして、ウィンドウ上の全てのUIの状態を書き換えるロジックで処理を一元化すべきだと思います。もちろんこれは理想論で、実践するのは困難ですが(画面がちらつく、重くなる)。超低速で悪名高い.NETのDataGridView辺りでこれをやったら、大変なことになっちゃいますね。