通用做法在文字類別與 UI 類別之間提供了更乾淨的分離,因此資訊隱藏更好。
通用做法的具體效益#
- 文字類別不需要知道 UI 細節(例如 backspace 鍵怎麼處理)
- UI 細節封裝在 UI 類別裡
- 新增 UI 功能時,不必到文字類別新增支援方法
- UI 開發者只需學少數幾個簡單的方法,這些方法可以重複用於各種用途 → 認知負擔降低
「假抽象」的識別#
原本專用版的 backspace 是個典型的假抽象(false abstraction):
- 表面看似把「刪了哪些字元」這件事藏起來
- 但 UI 模組真的需要知道這件事
- UI 開發者最後還是會去讀
backspace的程式碼確認行為 - 把方法塞進文字類別,反而讓 UI 開發者更難拿到他們需要的資訊
設計時的判斷標準#
軟體設計的核心問題之一:誰需要知道什麼?什麼時候需要?
- 當細節重要時 → 明確、顯而易見地呈現(例如修訂版的 backspace 實作)
- 把這類細節藏在介面背後只會製造模糊(obscurity)