禁用(Enabled)还是隐藏(Visible)?

对于程序员来说,如果一个功能对用户来说,不可用,到底是禁用还是隐藏许多时候是要纠结下的事情。实际上,程序编写过程中,一些细节的控制是一种很主观和即兴的东西,但为了统一的用户体验,一般来说,我觉得还是统一下规则为好。

首先,我们考虑我们这项功能为什么对用户不可用?

  • 这项功能用户没有权限访问;
  • 这项功能对于当前数据的状态来说无效;
  • 这项功能尚未完成(装点门面?);

那么,我们就接下来简单的讨论下该如何处理?

  • 用户权限不足

对于用户在整个会话运行期间,永远不可能用到的东西,除非你是为了显示自己的程序有多庞大(实际可能只有几行你自己写的代码),否则,藏起来可能让你的界面更清爽。

  • 状态无效

这种情况下,禁用要比隐藏明显更合理。禁用的话,界面上的元素布局不变,界面的变动就不会显得突兀,而且用户可以明确的知道你有这一功能,从而诱导用户如何改变这一状态。隐藏的话,则很容易让用户认为功能缺失。但是,如果二级状态依赖的上级状态不可用,我们更建议使用隐藏而不是禁用,以免误导用户。

  • 功能未完成

除非你是要装点门面,或者做一些简单的效果演示,否则,藏起来还是要好一些。保持低调一点,对你来说麻烦可能更少一点,要不用户天天跟着你问未完成的功能是啥时,你还得废口水。

下面我们举一个简单的例子:

1、登录对话框

登录时,如果用户没有输入用户名,那么登录功能实际上是不应该被访问的。但如果你将登录按钮隐藏了,用户许多时候就会误会您没有登录功能。而禁用登录按钮,则会让用户明白,它的输入条件不满足,而一旦输入用户名,你的登录按钮就应该启用(如果允许密码为空,不允许的话另说)。

2、数据记录编辑框

数据记录的增删改是一个常见的功能。我们讨论在权限允许的情况下,增、删、改、提交变更和取消变更功能的状态。

  • 增加功能:当处于编辑状态时,它应该被禁用,以避免重入。而处于浏览状态时,它应该被启用。
  • 删除功能:当处于编辑状态时,它应该被禁用,以避免混淆。而处于浏览状态时,它在至少有一条记录时,应该被启用,否则应该禁用。
  • 修改功能:这个的状态控制应与删除相同。
  • 提交变更:这个是依赖于状态的二级功能,我个人推荐在没处于编辑状态时隐藏而不是禁用,而处于编辑状态是显示。
  • 取消变更:同上

正如前面所说,这些细节的控制许多时候比较随性一些,但一个程序中,最好遵循相同的规则,以避免误导。

分享到: