寫代碼不難,難的是——給它起個像人話的名字
“計算機科學里真正難的只有兩件事:緩存失效,以及給東西起名字?!?/strong>
我們都對這句名言會心一笑——直到寫函數第 15 分鐘,還對著一個叫 data 的變量發呆:它可能是任何東西。命名之難,不在語法,在腦力:它抽象、它創意、它比實現邏輯更費神。
為什么這么難?怎么變強?
1. 名字有分量,也有長期成本
壞名字會黏住你。你也許想:
“先隨便叫叫,之后再改?!?/span>
但“之后”總也不會來?;仡^一看,全是 handleThing / getInfo / doStuff。
問題在于:名字不是標簽,是認知入口。看到 getUserProfile(),大腦會放松;遇到 getData(),大腦會緊張——“哪來的數據?關于什么?”
2. 模糊,比你想的更傷人
看看這些:
function handleChange() { ... }
function updateData() { ... }改的什么?哪種數據?對誰?
對比一下:
function updateCartTotal() { ... }
function handleFormInputChange() { ... }清晰的名字,讓同事(以及未來的你)無需鉆進實現也能明白上下文。
3. 代碼會變,但名字常沒變
你把函數重構得更強了——卻忘了改名。
于是,validateEmail() 還順帶校驗了密碼;userSettings 里塞滿了商品偏好。
“當名字在撒謊,bug 就躲起來了?!?/span>
讓名字永遠說真話,必要時就重命名。
4. 我們用通用占位在逃避命名
tempdataitemresfoo / bar / baz(別提了……)
這些在試驗期無可厚非,可若不及時清理,混亂會繁殖。你不必寫小說,但 emailInputValue一定比 val 更靠譜。
5. 好命名,本質上是寫作
你不止在編碼,還在溝通。
把代碼當“可執行的文檔”。名字是句子;類、變量、函數共同講故事。
最打動我的函數,幾乎自解釋:
function isUserLoggedIn()
function getTotalAfterDiscount()
function shouldDisableSubmitButton()像在讀英語句子。這不是巧合,而是有意為之的清晰。
6. 我的命名清單(踩坑之后的私房規則)
- ? 名詞給對象與數據:
user/cartItem/settings - ? 動詞給函數:
fetchData()/calculateTax()/handleSubmit() - ? 布爾用前綴:
isActive/hasPermission/shouldRetry - ? 少用含混后綴:
Info、Data、Thing(除非領域語義必須) - ? 描述目的,不是類型
- ?
updateInfo() - ?
updateUserAddress()
收尾
命名難,是因為它是思考的工作:你在為“意義”做決策,而不僅是敲“語法”。它也是衡量一個開發者是否用心的標志。
寫給未來的你(和隊友)能秒懂的代碼。名字不必完美,但認真對待命名,項目就會感謝你。
你見過最離譜或最迷惑的線上命名是什么? 評論區丟出來吧——不評判,只療愈。






























