1. If a user is very computer-naive, he might see it as an unconditional panic button for extricating himself from a hopelessly tangled misadventure. A more experienced computer user might visualize Undo as a storage facility for deleted data. A really computer-sympathetic user with a logical mind might see it as a stack of procedures that can be undone one at a time in reverse order.
如果用户是一个计算机盲,他会将撤销当做一个无条件的应急按钮,而将自己从运气不佳的混乱遭遇中解脱出来;稍有经验的用户可能会将撤销功能理解为恢复已删除数据的存储设备;真正有逻辑头脑,而且更理解计算机的用户可能将撤销看做程序的堆栈,并以相反的次序撤销。

-- 来源 -- About Face 3交互设计精髓

2. The tools for pulling a document out of the electronic stack and placing it on the top must also be present and obvious in their functions.
将电子文档从一堆电子文档中取出,并将它放到最顶端的工具也必须功能清晰。

-- 来源 -- About Face 3交互设计精髓

3. To create a facility more amenable to our user, we can create, in addition to the normal Undo stack, an independent buffer that collects all deleted text or data.
要想创建一个更能经受用户检验的功能,我们除了需要正常的撤销堆栈外,还要创建一个收集所有已删除文本或者数据的独立缓冲区。

-- 来源 -- About Face 3交互设计精髓

4. Each time Undo is invoked, it performs an incremental Undo; it reverses the most recent operation, replacing or removing data as necessary and discarding the restored operation from the stack.
每次调用撤销,它执行一次渐增撤销来恢复最近的操作。 如果需要的话,替换或者删除数据,并且放弃存储在堆栈中的操作。

-- 来源 -- About Face 3交互设计精髓

5. Don’t stack tabs.
不要堆叠标签。

-- 来源 -- About Face 3交互设计精髓

6. When the user reopens the file, the application could reload its undo stack with the actions the user performed the last time the application was run—even if that was a week ago!
当用户重新打开文件时,程序可以加载用户上次运行程序时的撤销堆栈,即使那是在一个星期以前。

-- 来源 -- About Face 3交互设计精髓

7. Most applications discard their stack of undo actions when the user closes the document or the application. This is very shortsighted on the application’s part. Instead, the application could write the undo stack to a file.
在用户关闭文档或者程序时,多数程序放弃其撤销堆栈,这是非常短视的行为;相反,程序可以将撤销堆栈写入文件。

-- 来源 -- About Face 3交互设计精髓

8. If the program implements multiple Undo, it must maintain a stack of operations, the depth of which may be set by the user as an advanced preference.
如果程序实现多次撤销,则必须维护一个操作堆栈,堆栈的深度可以根据用户的偏好来设置。

-- 来源 -- About Face 3交互设计精髓

9. In this more complex situation, the simplistic representation of the Undo as a single, straight-line, LIFO stack doesn’t satisfy the way it does in simpler situations.
在这种更复杂的情况下,将撤销表达为线性的后进先出堆栈,不能像简单情况下那样奏效。

-- 来源 -- About Face 3交互设计精髓

10. It is multiple level, showing a textual description of each operation in the Undo stack.
它是多个层次的,在撤销堆栈中显示了每次操作的文字描述。

-- 来源 -- About Face 3交互设计精髓