一个例子

让我们来假象一个场景:用户正在使用一套类似“信息管理系统”的软件,准备新增一条记录,输入完全部的数据后,软件却给出一条错误提示:

 

用户可能此时已经崩溃在屏幕前了,因为需要输入的记录可能有很多条,这意味着他不得不一项一项检查数据。

但换一种场景:用户同样输入完后,软件给出提示:

 

同时,点击确定后,光标自动跳转到错误的地方,用户只需输入正确的信息就可以了。这样避免了很多额外的工作量,省时省力。

人性化的提示信息

  在我们使用软件时,经常出现一些错误。这时程序可能只是简单地提示“出错啦!”,或者给出一大堆错误代码。这经常使初学者很茫然不知所措。如今,软件正越来越朝着人性化的方向发展,如何实现人性化的语言提示,是软件开发中一件至关重要的事。它不仅体现支持与服务的质量、影响产品的销量、更会表现出一家软件公司的风格——我们对用户有无微不至的关怀。

人性化提示的重要性不言而喻,它包括的内容也很广泛但要做到人性化提示并不是一件简单的事情,它涉及到数据有效值分析、错误处理、异常抛出、层之间数据传递、程序执行效率分析、人性化语言设计等众多方面方面的内容。

设计与要点

结合近期尝试制作的“学生信息管理系统”,在程序人性化信息提示方面,我个人认为需要在开发时做到以下几点:

第一,要有严格的数据检查。这是人性化错误提示的基础,连错误都发现不了,就提不上什么人性化错误提示了。首先,要搞清楚各种数据的合法条件;其次,在涉及到数据传递的每个类中加入常规检查函数,保证程序的健壮性,需要特别注意边界值上的问题;最后,一些特殊数据的特殊检查函数,并选择在合适的类中实现,如ID是否重复的检查就应放在链表类中进行。

第二,设计错误信息的上抛机制。一旦检查出错误,一定不能直接停止运行,而不管其他的事情。最简单的检查函数返回值会是bool类型,即检查通过与不通过。显然,这样设计的函数无法提供更具体的信息,也就无法进行提示了。个人认为,除非是在UI层的单项检查,否则最好设计返回值为int类型的函数,为了避免混乱,可以使用枚举类型来用ERR_开头的单词代替数字。你也可以直接返回字符串类型的错误信息,但是这样就会有大量的信息在各个层之间不断上抛,会造成程序效率降低。当然,可能另一种更好的错误处理的方式是抛出异常,但对于我们初学者来说,还接触不到这些知识。

第三,UI层的呈现方式。错误信息经过层层上抛,终于到达了UI层,此时就要考虑如何去呈现给用户了。一般来说,最常用的方式是弹出对话框,这样做虽然简单,但有时候也不免会出现这样的情况——用户面对点不完的对话框无语了。此时,个人认为有两种处理方式:一种是将所有的错误信息整合后放在一个对话框中弹出,如开篇提到的第二种情景里的;另一种则是直接提示在原对话框上提示,如一般网站才用的方式——在错误的数据后打上*号。这两种方式都有缺点,对于前者,如果错误的数据较多,很可能用户点完确定就忘记哪些信息发现错误;对于后者,可能用户不会在意到错误提示,而且,需要在窗口上添加很多控件。一种比较好的方法是综合两者的优点——弹出错误信息,然后将错误信息整合在UI的ERROR_LIST中。还有一些类似网页形式的提示信息如控件上的Popup Message等,但总体来说,在MFC中实现可能会比较难。

另外,提示文字的设计也是一门艺术,它会极大的影响到用户的使用感受,但本文作为技术文档就不涉及此方面的内容了。

总结

要实现人性化的信息提示,需要考虑很多方面问题,虽然实现起来难度要比核心的设计要简单得多,但这确实是软件设计中一个很实际也很有挑战性的问题,它牵涉到用户的使用的方便性与易用性,也遵循了软件开发与服务的根本——“客户需求”。

这是我在这次中软国际实训中提交的技术文档,各位老鸟看了不要笑,呵呵,欢迎大家评论!

posted on 2008-07-14 20:41 斯卡 阅读(1425) 评论(1)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理