好的,我把三种命名的核心定义、规则要求、使用场景和代码示例整理成了一个清晰的表格,方便你对比和查阅。
一、三种命名规则对比表
| 特性 | 🐍 蛇形命名 (snake_case) |
🐫 驼峰命名 (camelCase) |
📿 脊柱命名 (kebab-case / spinal-case) |
|---|---|---|---|
| 分隔符 | 下划线 _ |
大写字母(首字母小写) | 连字符 - |
| 字母大小写 | 全部小写 | 首单词小写,后续单词首字母大写 | 全部小写 |
| 示例 | user_nameget_user_by_id |
userNamegetUserById |
user-nameget-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_name 或 user-name |
userName |
取决于前端(JS 喜欢驼峰),但团队统一即可 |
五、记忆口诀
- Python 蛇游走(蛇形命名,用下划线
_) - Java 骆驼走(驼峰命名,靠驼峰
camelCase) - URL 脊椎走(脊柱命名,用脊椎骨
-)
希望这个整理对你有帮助!如果有具体场景需要判断,可以继续问我。
文档更新时间: 2026-06-07 02:28 作者:月影工作室