跳到主要內容

八個互動介面設計的黃金法則

互動介面設計其實是一門高深的學問。做出一個介面並不困難,許多程式設計的工具或是網頁設計工具都可以讓程式設計師在很多的時間內就將一個介面完 成。但是,要設計出一個好用的介面就是高手的領域了。而且,不是你程式厲害就可以寫出好用的介面。有些程式設計高手往往太過侷限在技術的領域,反而忽略了 用使用者的角度來提供介面,所以反而設計不出好用的程式。有些人更是錯誤的以為好看的介面就是好用。好看絕不等於好用,有時甚至是越好看得程式越難用。因 為把精神都花在美工上面,反而忽略了其他使用者相關的細節。


最近拜讀了Shneiderman的『八個黃金法則』,他把設計互動介面該注意的重點都點出來了。有在從事介面設計的人都應該一讀。
  1. 努力求取一致性(Strive for consistency)。讓整個介面具有一致性,直接的好處就是降低使用者的 學習門檻。一致性越高,使用者就可以運用越少的法則來使用整個系統。舉個例子來說,如果你設計的程式每個地方的剪下文字及貼上的用法都不同。那麼使用者就 要常常去翻使用手冊才知道怎麼做。你認為有幾個使用者有這樣的耐心陪你玩?
  2. 讓重度使用者有捷徑可用(Enable frequent users to use shortcuts)。也許你覺得自己設計了一個很簡單的使用方式可以讓初學者很快的上手。不過你有沒有想過玩家的感受呢?簡單的方式固然可以讓初學者上手,但是對於玩家來說,往往過份的冗長。對於有經驗的玩家而言,一步到位才是他最想樣的。
  3. 提供有意義的回饋(Offer informative feedback)。當使用者做了一件事情後,應該有給予有意義的回應。而不是所有事情都只是簡單的告知成功或失敗。應該要清楚的告知使用者成功了什麼?失敗是為了什麼等訊息。
  4. 設計對話以產生明確的結束訊息(Design dialog to yield closure)。一個清楚的操作過程應該包涵起始,進行,結束。也就是說,要讓使用者知道他的動作已經開始生效。若需要比較長的時間,也要讓使用者清楚的了解目前進度及距離結束還有多久。最後結束時,也要讓使用者明白的了解動作結束,後面不會有任何的動作。
  5. 提供簡易的錯誤處理(Offer simple error handling)。錯誤難免會發生,問題在於錯誤發生時,除了要讓使用者知道是什麼錯誤外,也要有解決的方法一併提出。至少也要有個可供追查的線索。
  6. 允許動作還原(Permit easy reversal of actions)。使用者難免會有誤動作發生。所以讓使用者有修復自己誤動作的機會,可讓使用者更放心的使用,
  7. 讓使用者覺得一切操之在我(Support internal locus of control)。使用者都希望自己能夠掌控這個系統。都希望當自己做了什麼,就能夠得到預期的東西。如果使用者做了一個動作卻無法得到預期的效果。甚至連做錯了什麼都不知道。這樣就是很糟糕的操作體驗。
  8. 減少使用者短期記憶的負擔(Reduce short-term memory load)。根據研究人類的短期記憶可以提供大概5-9件事情的記憶能力。操過這個範圍人類可能就需要利用其他的東西或是技巧來輔助記憶。所以別讓你的使用者記太多東西。因為他根本記不了這麼多。最好讓他覺得一切都是這麼的直覺,那就是最好的操作方法了。

留言

匿名表示…
謝謝大大分享好文章:D

這個網誌中的熱門文章

Windows Installer死掉了嗎?

最近我的電腦發生了奇怪的事情。只要是與Windows Installer有關的東西,都無法動作了。也就是說,我無法安裝包裝成msi的軟體。也無法加以移除。搞了半天,始終沒有頭緒。一度動念頭想要將整台電腦重灌。 不過,經過一路追蹤問題,我發現是Windows Installer的服務無法啟動,而造成整個問題。透過系統管理工具中的『服務』,去啟動Windows Installer服務時,每次都看到代碼1067的錯誤訊息。無論怎麼重灌Windows Installer也無法解決。 今天突然靈光一閃,我開始把正在執行的程式一個接著一個砍掉,一邊砍一邊去啟動Windows Installer服務。試了好久,都快要放棄的時候。忽然我的Windows Installer就run起來了。趕快看一下是砍了哪個程式變成這樣的。終於被我找到罪魁禍首了!!就是下面這個程式造成的。只要把這個服務停掉,我的Windows Installer就復活了!!! 感謝匿名網友提供另外一個小技巧: 『只要在windows installer服務的內容裡,在登入那頁勾" 允許服務與桌面互動 " 就輕鬆解決囉!』 BTW, 我沒實際試過,有遇到這個問題的人,請試試看!然後好心的跟我回報一下! 有些網友找不到service的控制畫面。下面簡單說明一下: service的控制是在 『控制台->系統管理工具->服務』 英文的話是 『Control Panel->Administrative Tools->Services』 再不然,用command line下services.msc /s也可以叫出來。 再不行...就試試吧 > net stop LVPrcSrv > %WINDIR%\system32\sc.exe config LVPrcSrv start= disabled PS: 如果需要重新安裝MSI installer,可以到Microsoft的 下載中心 。

Portable Python

我常常需要把Python寫的script帶到其他電腦使用,因此,一個免安裝,可攜帶的Python就顯得十分重要。最近看過了幾個可攜式Python的方案,下面這個PortablePython是我覺得最合我意的方案。因為它提供了大部分會用到的Python module及工具,甚至連wxPython及PyGame也有。同時也有好用的Python編輯器PyScripter。所有開發Python所需的開發工具都一應俱全了!把它放到隨身碟中,就不用到處幫人安裝Python了。 PortablePython : http://www.portablepython.com/

一個Python程式可幫檔名加上日期與時間

很多時候,我們希望能夠將檔案或是目錄名稱加上一個時間及日期,以便release。所以,我就寫了一個小小的程式來達到這個目的。我把這個程式貼上來,讓有興趣的人可以拿去使用。 -- #!/usr/bin/env python # -*- coding: ascii -*- """ Usage: cfgfn.py [filename or directory list] """ import sys import os import time import re import glob ro = re.compile(r'(?P<FN> .*)-[0-9]{8}-[0-9]{4}(?P<EXT> .*)') for fnl in sys.argv[1:]: for fn in glob.glob(fnl): mo = ro.match(fn) if mo: pre = mo.group('FN') ext = mo.group('EXT') else: pre, ext = os.path.splitext(fn) newFn = pre + time.strftime('-%Y%m%d-%H%M') + ext os.rename(fn, newFn) print 'Rename %s -> %s' % (fn, newFn)