什麼是樣式指南?
我在一次對話中提到了「樣式指南」(Style Guide)這個術語,結果被問到:「什麼是樣式指南?」
當我在 2000 年代初期首次進行 Genero 轉換時,那些已經完成 Genero 應用程式轉換的前輩給了我們一個建議:在完成幾個 Genero 概念驗證(Proof of Concept,POC)應用程式之後,整理一份文件,說明你的使用者體驗(UX)應該是什麼,然後將它作為以下工作的基礎:
- 撰寫
.4st、.4ad、.4tb、.4tm等樣式與設定檔案的程式碼 - 撰寫 Genero 表單和 Genero 對話框的程式碼
- 作為在程式碼審查和品質保證(QA)中衡量 Genero 應用程式的標準
這份文件稱為「樣式指南」,其中包含以下幾個重要部分:
程式類型 / 模式識別
列出應用程式中有哪些不同類型的程式,以及決定個別程式屬於哪種類型的判斷標準。(上一篇第 300 篇文章對此有簡單介紹。)
視窗 / 表單外觀
視窗與表單的整體外觀應該是什麼?不同類型的程式或視窗之間有何差異?
- 是否使用工具列(Toolbar)?如果是,位置在哪裡?包含哪些項目?
- 是否使用頂端選單(Topmenu)?如果是,位置在哪裡?包含哪些項目?
- 是否使用動作面板(ActionPanel)?如果是,位置在哪裡?包含哪些項目?
舉例來說,含有 TABLE 的表單可能會使用包含 firstpage、prevpage、prevrow、nextrow、nextpage、lastpage 等按鈕的工具列;而沒有 TABLE 的表單則不需要這些按鈕。
這也會影響你是要使用 ui.Interface 的方法來載入樣式表和動作預設值,還是使用 ui.Form 的方法;以及樣式表、動作預設值等檔案的內容應該包含什麼。
小工具決策圖
針對每個表單欄位,制定決定使用哪種小工具(Widget)的規則。最終應產生一個流程圖,讓你依序回答問題,最後得出要使用的小工具及其屬性值。
你可以從簡單的規則開始:資料型別是 DATE 嗎?如果是,使用 DATEEDIT;否則使用 EDIT。接著逐漸增加更多規則。例如,什麼情況下使用 COMPLETER?什麼情況下使用 BUTTONEDIT?什麼情況下使用 COMBOBOX?什麼情況下使用 RADIOGROUP?
除了選用哪種小工具之外,還要包括屬性的設定方式。例如:最後確定使用 EDIT 之後,什麼情況下需要指定 FORMAT?FORMAT 屬性如何填寫?可能的規則是:所有數值型態都應指定 FORMAT,而字元型態則不使用 FORMAT。
表單版面配置
考慮各種版面配置的決策點:
- 什麼時候使用
TABLE,什麼時候使用SCROLLGRID? - 什麼時候使用
VBOX/HBOX,什麼時候使用帶版面標籤的GRID? - 表單欄位標題是放在欄位左側還是上方?標籤是左對齊還是右對齊?欄位之間是否有分隔符號?
- 各種視窗呈現樣式(Presentation Style)屬性的值為何?
- 各種表格呈現樣式屬性的值為何?
- 視窗標題如何設定?
- 響應式(Responsive)規則是什麼?
- 使用什麼字型?使用什麼應用程式圖示?
術語標準
決定應用程式中要使用的詞彙,包括:
- 按鈕文字,例如「確定」/「取消」;以及一致性業務術語,例如:查詢(Query)vs 尋找(Find)vs 搜尋(Search)vs 瀏覽(Browse);新增(Add)vs 插入(Insert);更新(Update)vs 編輯(Edit)vs 修改(Change);移除(Remove)vs 刪除(Delete)等。你的 QAUD 模式搞不好是 FIED!
- 業務術語:是「分公司」還是「倉庫」還是「門市」?是「產品」還是「品項」還是「SKU」?
- 可接受的縮寫:Account 可以縮寫成哪種形式——Ac、A/c、Acc、Acct?
- 錯誤訊息的措辭方式:是「欄位名稱必須大於零」還是「欄位名稱不得小於零」?你要強調正確值應該是什麼,還是強調錯誤值是什麼?
樣式指南是一份活的文件
樣式指南是一份活的文件,你應該做好隨時修改的準備。隨著 Color Picker Widget、TagEdit Widget、PhoneNumber Edit 等新 GUI 功能陸續推出,你的樣式指南也應該更新,以反映這些新小工具的適當使用時機與方式。
樣式指南讓開發者無需自行做每一個 GUI 設計決策,因為這些決策已經在指南中事先制定好了。只要遵循樣式指南,就可以確保你的畫面具備一致的使用者介面。
如果你有樣式指南,請不要丟棄它。它不是在最初的 Genero 轉換完成後就可以束之高閣的東西,而是應該持續維護並隨時參照的文件。這篇文章的另一個寫作動機,正是因為我去了一個我知道以前有樣式指南的開發現場,卻發現那份文件已經無人問津。