generated at
スナップショット
UndoRedoを実装する手段の一つ
操作によって行った変更の結果をそのまま保存する
例)
お絵かきアプリで線を書いたら、canvasのデータをそのまま保存する
Redux で action を発行するたびに、変更前の Store の状態をそのまま保存する
あんまりやらないって言ったけどやるような気もしてきたshokai
Cons
逆操作コマンドに比べて、メモリの制約がかなり厳しい
簡単な操作でもメモリの使用量の増えが大きく、安定しない
複数人で同時編集を行いたい場合、容易にコンフリクトするため向かない
他人の編集を巻き込んで戻ってしまう
git push -f っぽいことになりますね
Pros
アプリケーションの状態が複雑になっても、比較的に実装が簡単で、復元が楽
どのスナップショットを選んでも、アプリケーションはその状態を完璧に復元できる
逆操作コマンドの場合、コマンド単体ではアプリケーションの状態を復元できない
操作の前(後)の状態が必要
スナップショットはランダムアクセスに強く、逆操作コマンドはシーケンシャルアクセスに強いとも言える
DBやファイル等に永続化しやすいshokai
アプリがクラッシュしてもundoできる
正常終了した時もundoしたい事がありそう。先週のプレゼン資料をちょっと巻き戻したいとかshokai
diffとスナップショットは相互変換可能のはずなので、もしかして自動で逆操作コマンドを作るようにすればいいとこ取りできるのでは