為什麼變數名風格是「語言口音」
同一個概念,四種語言裡長這樣:userName(Java)、user_name(Python)、UserName(C# 公開屬性)、user-name(CSS 類名)。這不是隨意的——每種語言社群用自己的慣用風格寫程式碼,讀程式碼的人靠它一眼分辨「這是變數、是常數、還是類名」。PascalCase 開頭多半是類型,全大寫底線多半是常數,camelCase 是普通變數。混著寫的程式碼庫,review 的第一印象就是「不專業」。
風格遷移是真實需求:接手 Python 專案轉 Java、把設定鍵轉成環境變數、把 JSON 欄位的 snake_case 轉成前端的 camelCase。先給一張慣用邊界表,再講轉換的規則細節——最後用大小寫轉換工具批次處理。
| 風格 | 寫法 | 慣用場景 |
|---|---|---|
| camelCase | userName |
Java/JS/TS 變數與函式 |
| PascalCase | UserName |
類名/類型/Go 導出 |
| snake_case | user_name |
Python/Ruby 變數、資料庫欄位 |
| kebab-case | user-name |
CSS 類、URL、檔名 |
| CONSTANT_CASE | USER_NAME |
常數、C 巨集、環境變數 |
| dot.case | user.name |
設定鍵、命名空間 |
轉換規則裡最容易踩的三個坑
手工轉換看起來只是加底線,但三個邊界決定了轉換品質:
1. 連續大寫怎麼拆。HTTPServer 應拆成 HTTP + Server(snake 得 http_server),而不是 https erver 或整串 httpserver。規則:連續大寫串的最後一個大寫字母若後面跟小寫,歸下一個詞。用這個輸入試任何轉換工具,一眼分辨品質。
2. 數字歸屬。parseJSON2x 的 2 黏著前面的詞(parse_json2x)比拆成 parse_json_2_x 更符合識別碼直覺;但 version2Beta 轉 snake 得 version2_beta 還是 version_2_beta 各家不一——本站工具採用「數字黏前不獨立」的口徑並全程一致。
3. 中文混排。已獲取 user_name 列表 轉 snake_case,中文應該保留(已獲取_user_name_列表)而不是被當成「非識別碼字元」刪掉。這對中文註解裡夾變數名的場景(code review、文件)是硬需求。
另外一個高頻輸入場景:全大寫文字轉 Title Case。ALL CAPS INPUT 的正確結果是 All Caps Input——即先把每個詞其餘字母小寫再首字母大寫;只加首字母不改其餘的工具會輸出 ALL CAPS INPUT(等於沒轉)。
各語言的大小寫函式與快捷鍵
改程式碼時的內建手段(批次處理文字用工具):
- Python:
"abc".upper()/.lower()/.title();sentence 式首字母用.capitalize() - JavaScript:
toUpperCase()/toLowerCase();Title Case 無內建,replace(/\S+/g, w => w[0].toUpperCase() + w.slice(1).toLowerCase()) - C/C++:
toupper()/tolower()逐字元,配合std::transform - 命令列:
tr 'a-z' 'A-Z';sed 首字母大寫 - 快捷鍵:JetBrains 系 Ctrl+Shift+U(選中循環切換);VS Code 裝 Change Case 類擴充綁定;Vim 可視模式
U/u/~
批次轉換的動線
真實場景裡要轉的往往是一列變數名、一份檔名清單、一段 JSON 欄位列表——字母大小寫轉換器為這個場景做了逐行批次模式:每行獨立轉換,user_name、getHTTPResponseCode、已獲取 user_name 列表 混排的清單一次貼上全部得到正確結果;關閉批次則把整段合併為一個識別碼(自然短語轉 snake/kebab 的 slug 用法)。轉換後配文字對比核對清單,JSON 欄位的風格遷移再接 JSON 格式化 檢視結構。
Frequently Asked Questions
camelCase 和 snake_case 應該選哪個?
跟隨語言的社群慣例:Java/JavaScript/TypeScript 用 camelCase 變數名,Python/Ruby 用 snake_case,Go 公開導出用 PascalCase、私有用 camelCase,CSS 類名與 URL 用 kebab-case,C 巨集與常數用 CONSTANT_CASE。團隊內部統一的優先級高於語言慣例本身——用線上大小寫轉換工具批次統一後,再配編輯器/linter 的命名規則固化。
變數名裡的連續大寫(如 HTTPServer)轉 snake_case 的正確結果是什麼?
http_server。規則是連續大寫串的最後一個大寫字母若後面跟著小寫,就歸到下一個詞:HTTPServer 拆成 HTTP + Server,XMLHttpRequest 拆成 XML + Http + Request。很多簡易轉換器會輸出 httpserver(丟掉邊界語義),選擇工具時用這兩個輸入試一下即可分辨。
各語言大小寫轉換的內建函式是什麼?
Python:str.upper()/lower()/title();JavaScript:toUpperCase()/toLowerCase();C++:toupper()/tolower() 逐字元配合 std::transform;Java:toUpperCase()/toLowerCase();命令列:tr 'a-z' 'A-Z'。批次處理文字用線上工具更快,改程式碼時用內建函式。
編輯器裡轉換大小寫的快捷鍵是什麼?
VS Code:擴充商店裝 Change Case 或 Transform 後可綁定快捷鍵,原生支援的是 Ctrl+Shift+U(轉大寫,部分鍵盤配置不同);JetBrains 系(IDEA/PyCharm):Ctrl+Shift+U 循環切換;Vim:可視模式 ~ / U / u;Emacs:M-u / M-l / M-c。