一個(gè)例子
讓我們來假象一個(gè)場(chǎng)景:用戶正在使用一套類似“信息管理系統(tǒng)”的軟件,準(zhǔn)備新增一條記錄,輸入完全部的數(shù)據(jù)后,軟件卻給出一條錯(cuò)誤提示:

用戶可能此時(shí)已經(jīng)崩潰在屏幕前了,因?yàn)樾枰斎氲挠涗浛赡苡泻芏鄺l,這意味著他不得不一項(xiàng)一項(xiàng)檢查數(shù)據(jù)。
但換一種場(chǎng)景:用戶同樣輸入完后,軟件給出提示:

同時(shí),點(diǎn)擊確定后,光標(biāo)自動(dòng)跳轉(zhuǎn)到錯(cuò)誤的地方,用戶只需輸入正確的信息就可以了。這樣避免了很多額外的工作量,省時(shí)省力。
人性化的提示信息
在我們使用軟件時(shí),經(jīng)常出現(xiàn)一些錯(cuò)誤。這時(shí)程序可能只是簡(jiǎn)單地提示“出錯(cuò)啦!”,或者給出一大堆錯(cuò)誤代碼。這經(jīng)常使初學(xué)者很茫然不知所措。如今,軟件正越來越朝著人性化的方向發(fā)展,如何實(shí)現(xiàn)人性化的語言提示,是軟件開發(fā)中一件至關(guān)重要的事。它不僅體現(xiàn)支持與服務(wù)的質(zhì)量、影響產(chǎn)品的銷量、更會(huì)表現(xiàn)出一家軟件公司的風(fēng)格——我們對(duì)用戶有無微不至的關(guān)懷。
人性化提示的重要性不言而喻,它包括的內(nèi)容也很廣泛但要做到人性化提示并不是一件簡(jiǎn)單的事情,它涉及到數(shù)據(jù)有效值分析、錯(cuò)誤處理、異常拋出、層之間數(shù)據(jù)傳遞、程序執(zhí)行效率分析、人性化語言設(shè)計(jì)等眾多方面方面的內(nèi)容。
設(shè)計(jì)與要點(diǎn)
結(jié)合近期嘗試制作的“學(xué)生信息管理系統(tǒng)”,在程序人性化信息提示方面,我個(gè)人認(rèn)為需要在開發(fā)時(shí)做到以下幾點(diǎn):
第一,要有嚴(yán)格的數(shù)據(jù)檢查。這是人性化錯(cuò)誤提示的基礎(chǔ),連錯(cuò)誤都發(fā)現(xiàn)不了,就提不上什么人性化錯(cuò)誤提示了。首先,要搞清楚各種數(shù)據(jù)的合法條件;其次,在涉及到數(shù)據(jù)傳遞的每個(gè)類中加入常規(guī)檢查函數(shù),保證程序的健壯性,需要特別注意邊界值上的問題;最后,一些特殊數(shù)據(jù)的特殊檢查函數(shù),并選擇在合適的類中實(shí)現(xiàn),如ID是否重復(fù)的檢查就應(yīng)放在鏈表類中進(jìn)行。
第二,設(shè)計(jì)錯(cuò)誤信息的上拋機(jī)制。一旦檢查出錯(cuò)誤,一定不能直接停止運(yùn)行,而不管其他的事情。最簡(jiǎn)單的檢查函數(shù)返回值會(huì)是bool類型,即檢查通過與不通過。顯然,這樣設(shè)計(jì)的函數(shù)無法提供更具體的信息,也就無法進(jìn)行提示了。個(gè)人認(rèn)為,除非是在UI層的單項(xiàng)檢查,否則最好設(shè)計(jì)返回值為int類型的函數(shù),為了避免混亂,可以使用枚舉類型來用ERR_開頭的單詞代替數(shù)字。你也可以直接返回字符串類型的錯(cuò)誤信息,但是這樣就會(huì)有大量的信息在各個(gè)層之間不斷上拋,會(huì)造成程序效率降低。當(dāng)然,可能另一種更好的錯(cuò)誤處理的方式是拋出異常,但對(duì)于我們初學(xué)者來說,還接觸不到這些知識(shí)。
第三,UI層的呈現(xiàn)方式。錯(cuò)誤信息經(jīng)過層層上拋,終于到達(dá)了UI層,此時(shí)就要考慮如何去呈現(xiàn)給用戶了。一般來說,最常用的方式是彈出對(duì)話框,這樣做雖然簡(jiǎn)單,但有時(shí)候也不免會(huì)出現(xiàn)這樣的情況——用戶面對(duì)點(diǎn)不完的對(duì)話框無語了。此時(shí),個(gè)人認(rèn)為有兩種處理方式:一種是將所有的錯(cuò)誤信息整合后放在一個(gè)對(duì)話框中彈出,如開篇提到的第二種情景里的;另一種則是直接提示在原對(duì)話框上提示,如一般網(wǎng)站才用的方式——在錯(cuò)誤的數(shù)據(jù)后打上*號(hào)。這兩種方式都有缺點(diǎn),對(duì)于前者,如果錯(cuò)誤的數(shù)據(jù)較多,很可能用戶點(diǎn)完確定就忘記哪些信息發(fā)現(xiàn)錯(cuò)誤;對(duì)于后者,可能用戶不會(huì)在意到錯(cuò)誤提示,而且,需要在窗口上添加很多控件。一種比較好的方法是綜合兩者的優(yōu)點(diǎn)——彈出錯(cuò)誤信息,然后將錯(cuò)誤信息整合在UI的ERROR_LIST中。還有一些類似網(wǎng)頁形式的提示信息如控件上的Popup Message等,但總體來說,在MFC中實(shí)現(xiàn)可能會(huì)比較難。
另外,提示文字的設(shè)計(jì)也是一門藝術(shù),它會(huì)極大的影響到用戶的使用感受,但本文作為技術(shù)文檔就不涉及此方面的內(nèi)容了。
總結(jié)
要實(shí)現(xiàn)人性化的信息提示,需要考慮很多方面問題,雖然實(shí)現(xiàn)起來難度要比核心的設(shè)計(jì)要簡(jiǎn)單得多,但這確實(shí)是軟件設(shè)計(jì)中一個(gè)很實(shí)際也很有挑戰(zhàn)性的問題,它牽涉到用戶的使用的方便性與易用性,也遵循了軟件開發(fā)與服務(wù)的根本——“客戶需求”。
這是我在這次中軟國(guó)際實(shí)訓(xùn)中提交的技術(shù)文檔,各位老鳥看了不要笑,呵呵,歡迎大家評(píng)論!
posted on 2008-07-14 20:41
斯卡 閱讀(1432)
評(píng)論(1) 編輯 收藏 引用