哦,请修改密码

文/fasiondog

伯乐在线上看到这篇“趣文:请修改密码”很有意思,是个非常经典的例子。在实际的软件开发中,这种不一次性向用户提示所有错误信息和修改建议的情况很常见,而不仅仅是输入密码才遇到。事实上,在检查输入密码上,这种错误已经很少见了,毕竟一大堆的应用都要输入密码,只要照着别人的做法抄就行了。

记得刚工作的时候,曾经从其它的产品移植过一段代码,这段代码的主要功能就是对输入的数据进行合法性检查,光是If-else就写了好几页的详细设计说明书。可惜的是,虽然各种可能错误的情况都做了检查,但是没有任何错误信息的提示,只是知道最后的结果。其实,这段代码只是在数据输入是检查一次而已,完全不会影响性能,所以移植的过程中,我对每一种错误都给出了错误提示和修改建议,并且留了一个命令接口,只要输入命令就能把所有的错误信息打印出来。为了这个命令的使用,移植完后,还专门写了篇简单的文档,直接发给产品经理,至于以后的维护,只有一次开发内部的新员工找过我一次,至于用服则从来没有出现过。

另一个例子来自一个任务调度程序的需求。这个任务调度程序有一个功能可以”导入任务“。初始的需求大致是这样写的”用户选择导入文件,系统检查文件格式是否正确,遇到错误时弹出错误提示,用户修改后再从新选择导入“。看到这个需求,我特意问了一下”这个导入的文件大概有多大“,得到的回答是上百行。可以想象一下使用时遇到的场景,遇到一个错误,停止导入,修改后再次导入,遇到第二个错误,停止导入,修改后再次导入,遇到第三个错误……

其实,解决这种问题很简单,只要想象一下自己使用的情况就好了,可惜很多人在需求写作、软件开发时都把自己忘了。其后果不仅仅是用户使用难受,更重要的是,这样做给自己留下了一大堆的尾巴,别人遇到问题时会不断来打扰你,实在收不了了这就会变成需求,于是再一次的开发启动了。如果你喜欢加班,那就请继续吧,如果不喜欢,也很简单,想想自己,牢记程序员的“偷懒法则”,一次性把事情清理掉这应该也算是偷懒吧。当然,也许你想要的就是这种”优化建议、需求变更、问题解决专家”来体现你的价值,那只有你自己祈祷永远不要被人发现真相。

最后,总结下需要一次性向用户提示所有错误信息和修改建议的常见场景:

  • 数据导入时的错误检查
  • 配置管理文件的错误检查
  • 批处理或大量数据合法性的检查

哦,请修改密码(引自《趣文:请修改密码》):

“抱歉,亲。你的密码已经使用超过 30 天了,已过期了哦。亲你必须重新设定一个新密码哦。”
roses
“抱歉,亲。你的密码位数太少了哦~”
pretty roses
“抱歉,亲。密码必须至少使用 1 个数字字符哦~”
1 pretty rose
”抱歉,亲。密码中不能用空格哦~“
1prettyrose
”抱歉,亲。密码必须至少使用 10 个不同的字符哦~“
1fuckingprettyrose
”抱歉,亲。密码必须至少用 1 个大写字母哦~“
1FUCKINGprettyrose
”抱歉,亲。密码不能连着用大写字母哦~“
1FuckingPrettyRose
”抱歉,亲。密码至少不能少于 20 个字符哦~“
1FuckingPrettyRoseShovedUpYourAssIfYouDon’tGiveMeAccessRightFuckingNow
”抱歉,亲。这个密码已有人用了哦~“

发表评论

电子邮件地址不会被公开。 必填项已用*标注