哪一个是撤消/重做行为的可接受约定



假设这是一个处理波形的数学应用程序。用户打开波形文件并对其进行编辑。

现在用户使用应用程序工具箱放大波形放大可能需要很长时间然后他们撤消它。然后他们再次重做

对于重做,应用程序应该如何操作?

  1. 替换之前进行的并由应用程序内部保存在内存中的扩增结果
  2. 再次运行耗时的扩增程序

此问题扩展到所有功能。

谢谢:-(

撤消重做操作通常使用命令堆栈和最后执行的命令的位置来实现。撤消后,将该位置向后移动一步,而不删除堆栈中的最后一个命令(现在是最后一个执行命令之后的命令(。

是否将数据与命令一起存储取决于您自己。但是,在您所描述的情况下,要使撤消工作,您需要完全反转上一个命令(可能无法(,或者在内存中保留以前的状态。因此,在这种特殊情况下,在扩增后保持下一个状态不应该花费任何代价。但是,如果用户不重做该命令,则需要正确地丢弃它。

正如@eddieward在一条评论中指出的那样,一个命令可能具有内在的破坏性(因此是不可逆的(,并且允许撤消它(通过保持以前的状态(可能是不可行的,例如因为内存限制。在这种情况下,您应该事先通知用户,返回是不可能的。

相关内容

最新更新