两年以前,我在一家解决方案公司做Launcher。Launcher里有一个功能是卸载应用,那时候我的实现是当卸载的时候,添加按钮仍然可用。后来客户提出这个问题,说某一时刻应该明确的告诉用户做一件事情,卸载的时候,只管列出可以卸载的应用,只提供卸载的功能。现在想想,这确实是一件比较重要的事情,某一时刻,给用户尽量少的选择,反而帮助了客户。
这样做有这样的优点:
- 用户很清晰现在是什么状态,该做些什么。
程序员是一种用户,在我加入了另一家公司,一次review同事的code。同事整体写的很好,只是有一些小的问题,其中一个就是一个类似函数:
public void test(String xxx) { }
xxx是一个可选的参数,api的注释是这样写的,当xxx的时候,传入 ""或null。这就给了用户两个选择,api的设计者本想让用户更容易的调用它,因为它有两个选择,传入“” 或 null,但事实上却会照成客户一种困惑,至少用户需要多几秒时间考虑,我传“”还是null。
别给用户太多选择!所以,这种情况,可以直接告诉api调用者,当xxx的时候,传入null。
生活中也有类似的场景,如一个人X问路,想去附近的B处,Y是那个熟悉的人。假设有多条路可以去B,那么Y可能如下:
-
直接告诉X,最便捷的路径。
-
告诉X,若干路径,a,b,c。
通常case 2会把X搞晕的,虽然更清晰更全面的告诉了X。其实告诉X一个明确的路径:“你向前走,第2个红绿灯,左拐,第2个路口向右拐,再走200米即可”,会更好。