[譯] 自動補全規則

zoomdong發表於2019-05-10

自動補全規則

使用已知值去進行自動補全文字似乎是一個很容易解決的問題,但是很多很多的介面設計都錯了。我經常看到這樣的錯誤,與其逐一抱怨,我決定寫下一些它們經常違背的規則。

可能這些規則中的某些並不是最好的,但是打破這些規則應該需要一個很好的理由(例如,如果所填的值都必須來自一個固定集合,那麼就不必遵守其中的一些規則,例如美國的州列表)。遵循這些規則至少能有不錯的體驗:

  • 精確匹配總是第一位的。如果使用者準確輸入一個選項,則其他選項必須始終低於使用者輸入內容的選項。

  • 除了精確匹配之外,最先被考慮的應該是字首匹配。如果我輸入 “Fr”,我想要的是 “Fresno”,而不是 “San Francisco”。

  • 在字首匹配之後,再進行字串匹配。從子字串開始匹配基本上都是錯誤的,因為使用者開始輸入單詞時是在開頭而不是在中間的某個地方。

  • 如果沒有子字串匹配,則可以選擇回退到子序列匹配。這僅僅在某些情況下有用。

  • 如果沒有子序列/子字串匹配,則可以選擇回退到近似匹配。這種情況一般很少很少出現。

  • 匹配應該按照字典序進行排序。

  • 當一個選項是另一個選項的字首時,把最短的選項放在最前面

  • 匹配應該不分大小寫,除非有兩個選項只是大小寫不同。在這種情況下,選擇和使用者輸入最匹配的。

  • 使用選擇的操作(例如搜尋術語)必須與接受第一個建議的操作不同,除非你必須先進行一些操作來開始使用自動補全的建議(例如,按向下箭頭)。使用者永遠需要採取額外步驟來使用自動補全。

  • 如果有當前自動補全選項,tab 鍵應該始終接受這個選項(無論是在下拉選單中突出顯示,還是在行內顯示)。

  • 如果自動補全選項是突出顯示的,那麼按 Enter 鍵應該始終使用該選項。即使有一部分頁面還沒有完全載入,它也永遠不該恢復為預設選項。如果某些內容還在載入,最好忽略 Enter 按鍵而不是選擇錯誤的選項。

  • 當使用自動補全的欄位沒有被聚焦時,自動補全不會被按鍵啟用。

  • 一般情況下,結果應該在 100 毫秒內呈現出來。

  • 當使用者快速輸入其他字母時,可以暫停自動補全,但是不要在使用者輸入補全之後顯示這一串字母中間的結果。最好等待更長的時間然後更改一次結果,而不是顯示看上去完成實際上還沒有完成的結果(我承認這條規則相當主觀)。

  • 如果某個選項被突出顯示,那就永遠不要更改它,即使載入了新資料也是如此。

有些可選功能在某些確切型別的自動補全中有意義,而在其他型別則未必如此。我確信對這些功能,會有比我所給出的更正確的名稱。

  • 當我聚焦輸入框但是還沒有輸入任何內容時,顯示我之前使用的選項。

  • 自動補全到最近的模糊字首。如果我輸入 “g” 並且匹配 “Google” 和 “GoodReads”,那麼這個操作將填入兩個 “o”,然後允許我輸入 “g” 或 “d” 來選擇我想要的選項。

  • 多部分匹配。這對於自動補全檔案路徑很有用,我可以輸入 “e/b/a” 來自動補全 “env/bin/activate”。ZSH 做得很好。

  • 遞迴匹配。由於自動補全有時作為快速瀏覽選項的一種方式有雙重用途,所以有時你希望從一個廣泛的過濾器開始,然後在這些結果中進行搜尋。例如,如果我輸入 “.pdf” 來檢視所有的pdf檔案,那麼我就可以按某個鍵(也許是逗號)開始在這些結果中搜尋,即使我現在輸入的內容實際上已經在我之前輸入的檔名中出現過。

  • 拼寫糾正。這往往在搜尋引擎中很有用。

  • 別名。嘗試自動補全使用者名稱時,可以允許此人的姓/名自動補全他的使用者名稱。對於表示完整狀態的州的縮寫也是如此。

  • 結果中的其他資訊。如果你是自動補全函式名稱,那麼如果能夠看到它們的引數列表,使用者會很高興。

  • 上下文感知建議。這在自動補全程式碼或單詞(通常在行動電話上)時非常有用,其中上下文可以預測所需要的結果可能是什麼。

  • 接受自動補全建議後,可以返回我輸入的內容。(使用向上箭頭來進行這個操作是一個比較好的方法)。

如果發現譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可獲得相應獎勵積分。文章開頭的 本文永久連結 即為本文在 GitHub 上的 MarkDown 連結。


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章