对于程序员来说,如果一个功能对用户来说,不可用,到底是禁用还是隐藏许多时候是要纠结下的事情。实际上,程序编写过程中,一些细节的控制是一种很主观和即兴的东西,但为了统一的用户体验,一般来说,我觉得还是统一下规则为好。
首先,我们考虑我们这项功能为什么对用户不可用?
- 这项功能用户没有权限访问;
- 这项功能对于当前数据的状态来说无效;
- 这项功能尚未完成(装点门面?);
那么,我们就接下来简单的讨论下该如何处理?
- 用户权限不足
对于用户在整个会话运行期间,永远不可能用到的东西,除非你是为了显示自己的程序有多庞大(实际可能只有几行你自己写的代码),否则,藏起来可能让你的界面更清爽。
- 状态无效
这种情况下,禁用要比隐藏明显更合理。禁用的话,界面上的元素布局不变,界面的变动就不会显得突兀,而且用户可以明确的知道你有这一功能,从而诱导用户如何改变这一状态。隐藏的话,则很容易让用户认为功能缺失。但是,如果二级状态依赖的上级状态不可用,我们更建议使用隐藏而不是禁用,以免误导用户。
- 功能未完成
除非你是要装点门面,或者做一些简单的效果演示,否则,藏起来还是要好一些。保持低调一点,对你来说麻烦可能更少一点,要不用户天天跟着你问未完成的功能是啥时,你还得废口水。
下面我们举一个简单的例子:
1、登录对话框
登录时,如果用户没有输入用户名,那么登录功能实际上是不应该被访问的。但如果你将登录按钮隐藏了,用户许多时候就会误会您没有登录功能。而禁用登录按钮,则会让用户明白,它的输入条件不满足,而一旦输入用户名,你的登录按钮就应该启用(如果允许密码为空,不允许的话另说)。
2、数据记录编辑框
数据记录的增删改是一个常见的功能。我们讨论在权限允许的情况下,增、删、改、提交变更和取消变更功能的状态。
- 增加功能:当处于编辑状态时,它应该被禁用,以避免重入。而处于浏览状态时,它应该被启用。
- 删除功能:当处于编辑状态时,它应该被禁用,以避免混淆。而处于浏览状态时,它在至少有一条记录时,应该被启用,否则应该禁用。
- 修改功能:这个的状态控制应与删除相同。
- 提交变更:这个是依赖于状态的二级功能,我个人推荐在没处于编辑状态时隐藏而不是禁用,而处于编辑状态是显示。
- 取消变更:同上
正如前面所说,这些细节的控制许多时候比较随性一些,但一个程序中,最好遵循相同的规则,以避免误导。