Date Category misc
  • "" slider_hidetitle:
  • 'off' category: 嵌入式

前面的Android, iPhone跟WP7对比文章里,目前为止,看来最大的争议就是一行代码弹框的问题了。写下这个论断之前,我就料到会有人反对,想来想去,还是把它说出来,看来有必要再详细解释一下我的观点,当然,依然是一家之言,仅供参考。

大家都记得我们小时候到街机房里面玩格斗游戏,《街霸》,《拳皇》,《真侍魂》。这些游戏中,最牛,最厉害的“大招”,都是最难“搓”出来的。我记得真侍魂里面霸王丸的天霸封神斩全中的话,可以砍掉对手70%的血。大家还记得天霸封神斩怎么搓么?是↘←↙↓↘→←↓↙+bc。能够熟练发出天霸封神斩的人,当年在我们眼里那都是绝世高手。

后来技术进步了,有了Nebula这样的模拟器,而且模拟器还支持联机对战。模拟器带来的另一个好处就是宏,可以把复杂的指令事先编一个宏,然后按一个按钮,就相当于输入了那一堆复杂的指令。这个功能太强大了,只要按一个按钮,就可以发出传说中的秘奥义招式了。像我这样的在街机厅里面从来就没有搓出来天霸封神斩的人,在家里面电脑前可以随意发大招了。太爽了!

插图:有了一键出天霸封神斩,裁判也不是我的对手

街机模拟器可以联机对战,我03年的时候在软院机房里联机玩过两局真侍魂。结果发现跟小时候在街机厅里面玩完全不是一个概念,小时候打游戏被对手用天霸砍死了,还要怀着非常敬佩的心情仰视别人一下。但是网上由于有了“一键n招”,网上联机的人人都随便出天霸封神斩,经常两个霸王丸天霸封神斩对砍,你一个,我一个。整个游戏的游戏性大打折扣,也就没什么玩头了。

为啥说这个例子呢,只是想说明,有时候“一键n招”并不是好事情,容易招致这个功能的滥用,天霸封神斩被滥用了,真侍魂就没玩头了。当然你可以说把用外挂的人踢走,我们假设SNK当年开发这款游戏的时候,就设置了一个天霸封神斩键,系统就支持一键出招,侍魂还会在当年大红大紫么?

MessageBox虽然没有天霸封神斩那么大的威力,但是作用类似,用得好可以让应用锦上添花,体贴周到。但是用得太多了就有副作用了。有些误操作概率非常小的功能,还要不厌其烦的提示用户,这就会让人厌烦。更有甚者,登录成功也弹框,保存成功也弹框。更有甚者,一些人写代码的时候,还用MessageBox输出调试信息。

对比一下安卓的通知系统吧,在安卓里面的通知有几类:

  1. 不需要用户干预的同步通知:比方说登录成功等消息。这类通知安卓里是用Toast的,一行代码即可实现。用户无需干预,几秒钟之后Toast自行消失。这种通知对用户的骚扰最小,即使滥用也不太可能会导致用户厌烦。

  2. 需要用户干预的异步通知:比方说miss了电话,来了短信等。这类通知安卓采用的是下拉Notification,最简单情况大概10行代码。这种通知对用户有骚扰,但用户可以眼不见心不烦。像某些有洁癖的人,看着通知不爽,也可以批量清空。

  3. 需要用户干预的同步通知:比方说密码错误,批量删除警告等。这类通知采用的是windows like的弹框,最简单的逻辑大概也要20行代码。这种通知用户如果不处理,就一直在屏幕上占着。如果滥用,对用户骚扰最大。

安卓初学者都有这样的经历,我想在屏幕上显示点什么,根据经验,能想到的最直接的操作就是弹框,后来谷歌一搜。OMG,弹框这么复杂,这么多行代码?咦,突然发现有个功能叫Toast,也可以在屏幕上显示点东西,只要一行代码,就用Toast吧。这就是导向。作为平台设计者,在设计平台的时候,应该对平台使用者有显式或者隐式的导向。让设计者与使用者之间的误解可能性尽可能小。这也是HCI设计的原则之一。

我猜想,谷歌在设计Android API的时候,并不是没有这个技术实力让一行代码弹框,只是它可能故意提高了一下弹框的门槛,给程序员以暗示,这个功能可能有副作用,用之前要三思。

人人都滥用天霸封神斩的侍魂不是好侍魂。大多数应用都用滥弹框的平台呢?

最后再说一句,写这篇文章不是想否定Windows Phone这个平台,只是针对一行代码弹框就事论事。可能一行代码弹框在微软的所有平台里面都存在,从win32 API, MFC, WinForm, WPF, Silverlight等等,这可能是技术惯性。如果iOS也可以一行代码弹框,那这里讨论的问题对iOS同样适用。再退一步,即使弹框问题的确存在,这也是一个小问题而已,跟架构,策略,甚至营销相比,都微不足道,微不足道。