「命名是程式設計中最難的兩件事之一」(另一件是快取失效與 off-by-one 錯誤)。本文從消除歧義、布林值語義精準、符合使用者預期三大維度,透過反面教材與最佳實踐對比,教你寫出「一眼看懂、不敢誤用」的變數名。
results = Database.allObjects.filter("year <= 2011");
歧義:filter 既可理解為「保留符合條件的」,也可理解為「過濾掉符合條件的」。
修正:
select、keep、whereexclude、remove、discard| 歧義詞 | 可能誤解 | 建議替換 |
|---|---|---|
| check | 檢查/核對 vs 勾選 | verify / validate / tick |
| process | 處理/加工 vs 過程 | handle / execute / transform |
| run | 運行/執行 vs 管理 | execute / start / operate |
| get | 獲取/取回 vs 計算/轉換 | fetch / retrieve / compute / convert |
| 前綴 | 語義 | 範例 |
|---|---|---|
| is | 狀態/屬性判斷 | isEmpty, isValid, isEnabled |
| has | 擁有/包含 | hasChildren, hasPermission |
| can | 能力/權限 | canEdit, canAccess |
| should | 建議/預期行為 | shouldRetry, shouldRefresh |
| need | 需求/必要條件 | needLogin, needUpdate |