我只能想到有一个应用按钮的两个很好的理由:
- 这些更改不能立即应用,但会在很长一段时间内锁定 GUI。
- 这些更改只有一起才有意义(如交易)。
这些都不是很常见。Historacally 1 过去几乎适用于任何选项。但是现在计算机速度更快,并且 1 很少相关。如果改变的效果可以立即看到,为什么会有人不想要呢?因此,可以通过跳过应用步骤来简化 gui(但通常不是代码)。我认为用户真正需要取消按钮的情况也不常见,部分原因是它有点模棱两可。如果我进行一项更改、应用、进行其他更改并按取消,我应该期待什么?是否会恢复第一个更改(在大多数应用程序中,答案是否定的,因为这更容易实现)?
如果是,那就是拥有应用按钮的关键,然后一切都结束了,然后仍然按确定/取消?或者我们是否需要考虑另一种选择,即关闭窗口,在这种情况下保留第一个更改但恢复第二个更改?
如果否,则应用基本上设置一个书签,如果按下取消,它将恢复为。但是在任何现实生活用例中真的需要这种复杂的行为吗?
因为用户(被认为)期望它而保持这种历史原因的复杂性是否合理?我看到用户总是按应用,然后确定。为什么?也许只是因为 GUI 太复杂了。或者因为不确定“应用”是否意味着“应用和关闭对话框”(它在某些应用程序中这样做)并且 OK 可能不会应用更改(我已经看到错误的应用程序,其中 OK 只是关闭窗口而不应用,也许他们也有)。至少我不认为用户一般都知道这些复杂选择的确切逻辑,因此他们不需要它,也不需要它。人们倾向于主要区分“积极”(是,好的,前进,应用)和“消极”(否,取消,中止,返回)动作是对话,拥有一个以上的任何一个都需要用户更多的关注。有趣的是,与另一个交换一个积极的行动似乎并没有太大影响用户的感知。如果带有按钮是/否的对话框更改为确定/取消,许多用户甚至不会注意到。
关于可用性(恕我直言,这更为重要)。如果做错了,可维护性的即时应用可能会非常混乱,但如果做得好,也会非常干净和可维护。如果应用程序是使用一次性应用的方法编写的,则通常只有一个功能。为每一个微小的变化调用这样的函数当然不是很有效。我所看到的通常是通过将函数拆分为几个不同的函数来应用不同的东西来解决这个问题,理想情况下,一个专用函数用于可以进行的每种更改。这将使应用程序更具响应性,但维护起来很糟糕。所以不要去那里。一个巧妙的解决方案是使用 MVC (Model-View-Controller) 并为每个配置项创建一个模型,并将它们绑定到配置表单中的字段以及应用程序的相关部分(以及配置存储 back-结束,因此每个更改都会自动保存)。如果相关环境中没有可用的 MVC,那么绝对值得编写一个。