既然看到這了,送我一個「贊同」吧,支援我的創作。
想更進一步和我一起玩耍,歡迎「搜索微信公號:跨界架構師」或者在「右側掃描」。
內容包括:架構設計丨分散式系統丨產品丨運營丨個人深度思考。
如何優雅做系統錯誤提示?
如果第二次看到我的文章,歡迎右側掃碼訂閱我喲~ 👉
每周五11:45 按時送達。當然了,也會時不時加個餐~
我的第「149」篇原創敬上
大家好,我是Z哥。
不管是日常的工作中還是生活中,我們每天會用到很多軟體系統。
不知道你有沒有過這樣的感受,當你使用軟體遇到異常的時候,有時候軟體給出的錯誤提示讓人摸不著頭腦。唯一的辦法就是複製到搜索引擎搜一下,看看有沒有哪個不幸的人與我遇到一樣的問題。
所以,一個好的錯誤提示特別重要。它不但能讓使用者明白當前到底發生了什麼,甚至還能引導如何解決異常。達到這個程度的話自然可以大大提高系統的使用效率,也能間接降低己方商務人員或者產品經理的培訓成本。
因此,作為程式設計師群體的一份子,在這裡我想呼籲大家認真對待錯誤提示,特別是那些不是給「人」看的錯誤提示……
作為軟體的創造者,我們雖然無法避免出現異常、出現bug,但是我們可以做到避免無意義的錯誤提示產生。
首先,一些常見的容易讓人摸不著頭腦的錯誤提示要先避免。比如,
-
提交失敗。
-
數據讀取失敗。
-
……
這類錯誤提示看上去準確表達了當前遇到的問題,實際上啥也沒說。你想像一下,當我點擊一個提交按鈕之後,頁面沒有跳轉而且還彈個框出來,哪怕裡面什麼字都沒寫,我能也猜到這裡估計出錯了。
但是具體錯在哪?作為用戶該如何處理?一概不知。
另外,還有一種常見的情況是,錯誤提示含有太多的技術術語,使用者根本不明白啥意思,也不關心這些。比如,
-
遠程服務響應超時。
-
事務執行失敗,XX保存失敗。
-
……
其實這還算好的,有的甚至把技術框架中返回的expcetion資訊直接作為錯誤提示出來。這對用戶看起來就是一堆亂碼,他只會找你說「系統亂碼了,幫我解決一下……」。
如果上面的景象就在你日常工作中發生,也不用不好意思,我們都是這麼過來的。Z哥我自己以前也同樣沒意識到這個問題,經過了這些年的工作之後,我認為,編寫正確的錯誤提示可以按照以下的思路來。
/01 不要提示用戶不關心的資訊/
首先來個排除法。
我們作為程式設計師經常需要通過一些技術性的線索來排查問題,特別是expcetion資訊。但用戶並不關心它們,而且他們無法對此類消息進行任何處理。
所以,這些資訊記錄到日誌里就好,頁面上無需給出這種用戶不關心的資訊。
/02 清楚表達問題原因/
讓用戶清楚的知道問題的原因,是他能否自行解決問題的基礎。
比如,前面提到的「提單失敗」的例子,你告訴他由於缺少XX資訊導致提交失敗,那麼使用者自然會去想辦法把缺少的資訊給補上。
我還記得我之前用某個郵箱的時候,有封郵件發不出去,它總是提示我「郵件發送失敗。」我真是服了,到底啥原因發送失敗,後來經過自己不斷的測試才知道是某個附件太大了導致發送失敗。
/03 給出引導建議/
這點在一些企業內部使用的系統,以及一些toB的項目中特別重要。因為大多數系統使用者都只負責自己工作相關的部分,對其他的模組並不了解。所以,哪怕你將問題的原因表達的很清楚,但是他還是不知道該如何解決,只能尋求產品經理或者開發人員的協助。
比如,電商平台的客服在後台替用戶修改訂單收貨地址的時候,發現某個地區下沒有可用快遞可選。如果你沒有給出引導,諸如「聯繫XX人員進行設置。」之類的內容,那麼他們只能來找你解決,無其他路可走。
如果想做得更好一些,針對某些場景可以直接放出下一步操作的連接,這樣用戶可以直接到達需要他進行操作的頁面。
/04 提示內容儘可能簡短/
文字一多,大多數人都不會逐字逐句看的,甚至有些人會完全不看。
Z哥工作中遇到過無數次這種情況。不管是錯誤提示還是操作提示,不管你寫的多麼詳細、清楚,只要文字超過2行或者有幾十個字以上,很多人看都不看直接截個圖發給你,問你該怎麼辦?
聽說有個美國機構做過相關的研究:
如果句子中的單詞數不超過8個,讀者可以理解其中的100%。如果句子包含43個單詞或更長的單詞,則讀者的理解力將下降到不足10%。
雖然這個研究說的是英文,但是中文也是類似的道理。不過我沒找到這個研究的具體出處,不知道真假,但是我覺得這個結論還是很符合常識的。
以上這4點說起來簡單,也很好理解,沒什麼新奇的。但是真正做的時候很多人就把它們拋之腦後了。
當然,比給出合理的錯誤提示更好的是,避免出現錯誤。所以你還可以更進一步,提前規避掉一些錯誤。
比如,
-
為了避免日期選擇超過有效範圍,可以對有效範圍外的日期設置為禁用狀態。
-
為了避免在信用卡卡號之類的文本框內輸入數字以外的字元,做一下輸入限制。
-
為了避免在弱網路下頁面無法正常載入而提示錯誤,可以做快取,提前預存一些數據在本地。
-
……
好了,總結一下。
這篇呢Z哥和你分享了我對軟體系統拋出的錯誤提示的看法。我認為好的錯誤提示需要符合以下4點。
-
不要提示用戶不關心的資訊
-
清楚表達問題原因
-
給出引導建議
-
提示內容儘可能簡短
如果可以的話,還可以通過做一些前置的限制約束來提前規避掉一些可能發生的異常。
希望對你有所幫助。
推薦閱讀:
作者:Zachary
出處://zacharyfan.com/archives/1250.html
如果你喜歡這篇文章,可以點一下右下角的「推薦」。
這樣可以給我一點回饋。: )
謝謝你的舉手之勞。