camelCase、snake_case、kebab-case 用哪个
一句话结论
跟着语言生态走,不要自己发明。JavaScript / Java 变量用 camelCase,Python / Ruby / Rust 用 snake_case,CSS 类名、URL 路径、npm 包名用 kebab-case,常量用 SCREAMING_SNAKE_CASE。同一项目内保持一致比选"最好的"更重要。
核心区别对照
| 写法 | camelCase | snake_case | kebab-case |
|---|---|---|---|
| 分隔符 | 无,靠大写字母分词 | 下划线 | 连字符 |
| Java / JavaScript 变量 | 标准 | 少见 | 不可用(连字符非法) |
| Python / Rust / Ruby 变量 | 不推荐 | 标准 | 不可用(连字符非法) |
| CSS 类名 / HTML 属性 | 可用但少见 | 少见 | 标准 |
| URL 路径 / 文件名 | 不推荐(大小写敏感) | 可用 | 标准(利于 SEO 分词) |
| 键盘输入成本 | 需按 Shift | 需按 Shift + 减号 | 最低 |
camelCase 与 PascalCase
驼峰靠大写字母分词,不引入额外字符,在 Java、JavaScript、C#、Swift 里是变量与函数的标准写法;首字母大写的 PascalCase 通常留给类名和组件名。缺点是对非英语母语者和全大写缩写不友好(XMLHttpRequest 这类历史遗留就是例子)。
snake_case 与 kebab-case
snake_case 用下划线,在 Python、Ruby、Rust、Go 以及数据库字段名里是主流,可读性最好的形式之一,全大写变体 SCREAMING_SNAKE_CASE 专用于常量。kebab-case 用连字符,是 CSS 类名、HTML 属性、URL 路径和 npm 包名的标准——因为连字符在标识符里非法,而在 URL 和 CSS 里最自然,且搜索引擎会把连字符当作分词依据。
怎么选
- JS / Java / C# 变量与函数 → camelCase
- Python / Rust / Go / 数据库字段 → snake_case
- CSS 类名、URL、文件名 → kebab-case
- 常量 → SCREAMING_SNAKE_CASE
相关工具
常见问题
可以在同一个项目里混用吗
跨语言边界时不可避免(前端 camelCase、后端 snake_case 很常见),此时应在接口层做一次统一转换,而不是让两种风格散落在同一层代码里。
URL 里为什么推荐连字符而不是下划线
搜索引擎把连字符当作词分隔符,下划线则可能被当作连接符,user-name 比 user_name 更容易被正确分词。
命名风格影响性能吗
完全不影响。它纯粹是可读性与团队约定问题,一致性的价值远大于风格本身。