跳到主要內容

← 返回部落格

camelCase、snake_case、kebab-case:命名慣例完整整理

「電腦科學裡只有兩件難事:快取失效與命名。」命名不只關乎你叫它什麼,也關乎你用什麼風格來寫。不同語言與生態圈偏好不同慣例,混用會讓程式看起來雜亂。這篇給你實用整理。

同一個字串在每種命名慣例下的樣子。 the lord of the rings: return of the king 丟進大小寫轉換器:

camelCase   theLordOfTheRings:ReturnOfTheKing
PascalCase  TheLordOfTheRings:ReturnOfTheKing
snake_case  the_lord_of_the_rings:_return_of_the_king
kebab-case  the-lord-of-the-rings:-return-of-the-king

注意那個冒號的去向:它在 camel 與 Pascal 裡留著,在 snake 與 kebab 裡消失了 —— 因為那兩種把任何非文字字元都當成分隔符。這就是實務規則:snake 與 kebab 適合檔名與網址,正因為它們會把標點丟掉;camel 與 Pascal 則原樣保留你給的東西。

主要風格

  • camelCase —— 首字小寫,其後每個字首大寫:myVariableName。JavaScript、Java 等語言中變數與函式的預設。
  • PascalCase(又稱 UpperCamelCase)—— 每個字首都大寫:MyVariableName。用於類別、型別與 React 元件。
  • snake_case —— 全小寫,以底線連接:my_variable_name。Python 與 Ruby 中變數與函式的標準,也常見於資料庫欄位名。
  • kebab-case —— 全小寫,以連字號連接:my-variable-name。用於網址、CSS 類別與檔名。(多數語言中不能當識別字,因為連字號會被讀成減號。)
  • CONSTANT_CASE(SCREAMING_SNAKE_CASE)—— 全大寫加底線:MAX_RETRY_COUNT。慣例上用於常數與環境變數。

哪個語言用哪種?

命名慣例是「融入這份程式碼」的強烈訊號:

  • JavaScript / TypeScript —— 變數與函式用 camelCase,類別與型別用 PascalCase,真正的常數用 CONSTANT_CASE。
  • Python —— 函式與變數用 snake_case,類別用 PascalCase,模組常數用 CONSTANT_CASE(PEP 8)。
  • Go —— 匯出名稱用 PascalCase,未匯出用 camelCase。
  • CSS —— 類別名(.main-nav)與自訂屬性(--brand-color)用 kebab-case。
  • 網址與檔名 —— 偏好 kebab-case(/blog/my-post),因為易讀且對網址安全。

Title Case vs Sentence case

還有兩種用於文字而非程式的風格:

  • Title Case 把每個單字首字母大寫 —— 用於標題(「A Naming Conventions Guide」)。
  • Sentence case 只把整行第一個字母大寫 —— 因為讀起來更自然,越來越常用於 UI 標籤與標題。

在風格之間轉換

你常需要把名稱從一種風格轉成另一種 —— 例如把資料庫欄位 created_at(snake_case)轉成 API 的 JSON 欄位 createdAt(camelCase)。手動改既繁瑣又容易出錯。

我們的大小寫轉換工具一鍵搞定:貼上名稱或片語,即可在 UPPERCASE、lowercase、Title Case、Sentence case、camelCase、PascalCase、snake_case、kebab-case 與 CONSTANT_CASE 之間即時切換。

四種風格並排,直接來自我們自己的大小寫轉換器:

輸入camelCasePascalCasesnake_casekebab-case
user first nameuserFirstNameUserFirstNameuser_first_nameuser-first-name
HTTP response codehttpResponseCodeHttpResponseCodehttp_response_codehttp-response-code
iPhone 15 Pro MaxiPhone15ProMaxIPhone15ProMaxi_phone_15_pro_maxi-phone-15-pro-max
XMLHttpRequestxmlhttpRequestXmlhttpRequestxmlhttp_requestxmlhttp-request

幾個小建議

  • 在專案內保持一致。 用哪種慣例,不如全體統一來得重要。
  • 遵循語言的慣用寫法。 在 JavaScript 裡寫 snake_case(或在 Python 裡寫 camelCase)會顯得格格不入。
  • CONSTANT_CASE 少用 —— 只給真正的常數與環境變數。

風格對了,程式讀起來就像本來就屬於那裡。下次要重塑一個名稱時,試試免費的大小寫轉換工具

其中兩列帶著警告。HTTP response code 變成 httpResponseCode —— 縮寫被壓平成 http,這其實是多數風格指南在識別字裡想要的樣子,但它是一個決定,不是中性的轉換。而 iPhone 15 Pro Max 變成 i_phone_15_pro_max:轉換器在 iPhone 內部的大小寫轉折處切開,留下一個孤零零的 i_。機械式改大小寫對普通詞很可靠(user-first-name),一旦碰到縮寫或品牌名就不可靠 —— 所以跑完之後要讀一遍。