好的,我把三种命名的核心定义规则要求使用场景代码示例整理成了一个清晰的表格,方便你对比和查阅。


一、三种命名规则对比表

特性 🐍 蛇形命名
(snake_case)
🐫 驼峰命名
(camelCase)
📿 脊柱命名
(kebab-case / spinal-case)
分隔符 下划线 _ 大写字母(首字母小写) 连字符 -
字母大小写 全部小写 首单词小写,后续单词首字母大写 全部小写
示例 user_name
get_user_by_id
userName
getUserById
user-name
get-user-by-id
可读性 ⭐⭐⭐⭐⭐(极强) ⭐⭐⭐⭐(较强) ⭐⭐⭐⭐⭐(极强)
打字速度 稍慢(需按 Shift) 较快 稍慢(需按连字符)
主要使用场景 Python 变量/函数/模块
URL 查询参数
Java/JavaScript 变量/函数
JSON 字段名
URL 路径
CSS 类名
NPM 包名
是否可用于 Python 文件名 必须使用 ❌ 不使用 ❌ 不使用(连字符导致导入错误)
是否可用于 URL ⚠️ 仅查询参数,不用于路径 ❌ 从不使用 必须使用

二、详细规则与要求

1. 🐍 蛇形命名 (snake_case)

规则要求:

  • 全部字母必须小写
  • 单词之间使用下划线 _ 连接
  • 以下划线开头有特殊含义(表示“私有”,如 _private_var
  • 不能以数字开头
  • 长度不限,但要简洁有意义

正确示例:

my_variable = 10
calculate_average_score()
user_profile_info
MAX_RETRY_COUNT  # 常量用大写蛇形

错误示例:

myVariable = 10        # ❌ 用了驼峰
calculateAverageScore() # ❌ 用了驼峰
user-profile-info       # ❌ 用了连字符
MyVariable = 10        # ❌ 首字母大写

适用场景:

  • Python:变量、函数、方法、模块名(文件名)
  • 其他语言:Ruby、Rust 推荐使用
  • URL:查询参数(如 ?user_id=123
  • 数据库字段名(常见)

2. 🐫 驼峰命名 (camelCase)

规则要求:

  • 首单词全部小写(这是小驼峰大驼峰 PascalCase 首字母也大写)
  • 后续每个单词的首字母大写,其余字母小写
  • 不使用任何分隔符(靠大写字母区分单词)
  • 不能以数字开头
  • 可以包含数字(在单词后面)

正确示例:

// 小驼峰(变量/函数)
userName = "Alice"
calculateAverageScore()
httpClientTimeout

// 大驼峰(类名)
class UserAccount { }
class HttpClient { }

错误示例:

user_name = "Alice"     // ❌ 用了蛇形
UserName = "Alice"      // ❌ 首字母大写了(那是大驼峰/类名)
calculate-average-score // ❌ 用了连字符
userName123 ✅ 合法(数字可以)

适用场景:

  • JavaScript/TypeScript:变量、函数、JSON 字段
  • Java:变量、方法名
  • C#/C++:变量、方法名(小驼峰)
  • 类名/接口名:用大驼峰 PascalCase

3. 📿 脊柱命名 (kebab-case)

别名:spinal-case、dash-case、slug-case、lisp-case(源自 Lisp 语言)

规则要求:

  • 全部字母必须小写
  • 单词之间使用连字符 - 分隔(ASCII 45,即减号)
  • 不能有下划线或大写字母
  • 不能以连字符开头或结尾
  • 不能包含空格或特殊字符(除非编码)

正确示例:

user-profile
get-user-by-id
api-version-v2
background-color
my-css-class-name

错误示例:

user_profile      # ❌ 用了下划线
userProfile       # ❌ 用了驼峰
user-name-        # ❌ 结尾不能有连字符
-User-Name        # ❌ 不能有大写,不能以连字符开头
getUserById       # ❌ 驼峰

适用场景:

  • URL 路径(最重要):/user-profile
  • CSS 类名/ID:.btn-primary
  • HTML 属性(自定义):data-user-id
  • NPM 包名:@my-company/my-package
  • Git 分支名(部分团队):feature-user-auth
  • Markdown 锚点链接:#user-profile-section

三、快速决策指南

当你需要命名时,按这个逻辑选择:

问:这个东西是 URL 的路径部分吗?
   ├─ 是 → 用脊柱命名 (kebab-case)  ✅ 例:/user-profile
   └─ 否 → 继续判断

问:这个东西是 Python 的变量/函数/文件名吗?
   ├─ 是 → 用蛇形命名 (snake_case)  ✅ 例:user_profile
   └─ 否 → 继续判断

问:这个东西是 JavaScript/Java 的变量/函数/JSON 字段吗?
   ├─ 是 → 用小驼峰 (camelCase)     ✅ 例:userProfile
   └─ 否 → 继续判断

问:这个东西是 CSS 类名或 NPM 包名吗?
   ├─ 是 → 用脊柱命名 (kebab-case)  ✅ 例:my-button
   └─ 否 → 看团队规范或语言官方文档

四、常见错误与避坑

错误场景 ❌ 错误写法 ✅ 正确写法 原因
Python 文件名 my-utils.py my_utils.py 连字符导致无法 import(被解析为减法)
Python 变量 myVariable my_variable PEP 8 强制要求蛇形
URL 路径 /getUserById /get-user-by-id SEO 差,不符合惯例
URL 查询参数 /user?userId=123 /user?user_id=123 虽然可用,但不推荐;蛇形更常见
CSS 类名 .btnPrimary .btn-primary CSS 规范推荐用连字符
JSON 字段名 user_nameuser-name userName 取决于前端(JS 喜欢驼峰),但团队统一即可

五、记忆口诀

  • Python 蛇游走(蛇形命名,用下划线 _
  • Java 骆驼走(驼峰命名,靠驼峰 camelCase
  • URL 脊椎走(脊柱命名,用脊椎骨 -

希望这个整理对你有帮助!如果有具体场景需要判断,可以继续问我。

文档更新时间: 2026-06-07 02:28   作者:月影工作室
IT运维支持-AIWALY-月影工作室