每门语言都有自己的命名惯例。JavaScript 变量用 camelCase,Python 函数用 snake_case,CSS 类名用 kebab-case,数据库列名通常是 snake_case,React 组件是 PascalCase,常量是 SCREAMING_SNAKE_CASE。写跨语言代码、对接 API、做数据库字段映射时,在各种命名风格之间手动转换既枯燥又容易出错。
常见的命名风格
camelCase(小驼峰)
多个单词连在一起,第一个单词全小写,后续每个单词首字母大写:
userLoginCount
fetchApiResponse
isAuthenticated
使用场合:JavaScript / TypeScript 变量和函数、JSON key、Java 方法名、Swift 属性。
PascalCase(大驼峰 / UpperCamelCase)
和 camelCase 一样,但第一个单词首字母也大写:
UserLoginCount
FetchApiResponse
IsAuthenticated
使用场合:JavaScript / TypeScript 类名、React 组件名、C# 类型、Python 类名。
snake_case(下划线命名)
单词之间用下划线连接,全小写:
user_login_count
fetch_api_response
is_authenticated
使用场合:Python 变量和函数、Ruby、PostgreSQL 列名、PHP、C/C++ 结构体字段。
SCREAMING_SNAKE_CASE(全大写下划线)
和 snake_case 一样,但全部大写:
USER_LOGIN_COUNT
MAX_RETRY_COUNT
API_BASE_URL
使用场合:各语言的常量——Python 的模块级常量、Java 的 static final、环境变量、C/C++ 的宏定义。
kebab-case(短横线命名)
单词之间用连字符(-)连接,全小写:
user-login-count
fetch-api-response
is-authenticated
使用场合:CSS 类名和自定义属性、HTML 属性、URL slug、npm 包名、CLI 命令行参数。
Title Case(标题大写)
每个单词首字母大写:
User Login Count
Fetch Api Response
Is Authenticated
使用场合:博客标题、页面标题、按钮文字、菜单项。
各语言命名规范速查
| 语言 | 变量 | 函数 | 类 | 常量 | CSS |
|---|---|---|---|---|---|
| JavaScript | camel | camel | Pascal | SCREAMING | kebab |
| TypeScript | camel | camel | Pascal | SCREAMING | kebab |
| Python | snake | snake | Pascal | SCREAMING | — |
| Go | camel | camel(导出时 Pascal) | Pascal | camel 或 Pascal(MixedCaps) | — |
| Rust | snake | snake | Pascal | SCREAMING | — |
| Java | camel | camel | Pascal | SCREAMING | — |
| C# | camel | Pascal | Pascal | Pascal | — |
| Ruby | snake | snake | Pascal | SCREAMING | — |
| SQL | snake | — | — | UPPER | — |
实战场景
REST API 响应 → 后端模型字段
API 返回 camelCase,Python 代码用 snake_case。以前要逐个手改,现在批量粘贴进转换器:
API 返回:
{ "userId": 42, "firstName": "Alice", "createdAt": "2026-01-01" }
Python 模型字段:
user_id: int
first_name: str
created_at: datetime
转换器不拆分 camelCase,直接粘 userId 会得到 userid。先把词用空格隔开(user id、first name、created at),再复制 snake_case 一行,得到 user_id、first_name、created_at。
数据库列名 → 代码变量
PostgreSQL 用 snake_case。把一批列名粘进去,选 camelCase,一次转换出 TypeScript interface 的字段名,不用逐个敲。
URL Slug 生成
文章标题 “我最常用的开发工具 Top 10” → 转 kebab-case 后得到 我最常用的开发工具-top-10(英文部分生效),或者先把英文标题转一下:My-Top-10-Developer-Tools → my-top-10-developer-tools。
CSS 自定义属性
从 JavaScript 拿到 camelCase 的变量名,转成 CSS 变量需要的 kebab-case:
/* JS: userPrimaryColor */
/* CSS: --user-primary-color */
重构时批量改名
重构旧代码,需要把一批 camelCase 函数名改成 snake_case。先用转换器把所有名字转好,再用编辑器的批量替换。
转换器的工作原理
转换器先把输入转成小写,再按所有非 ASCII 字母、非数字的字符拆分:空格、下划线、连字符和标点。所有目标风格同时输出:
my_variable_name、my-variable-name、MY VARIABLE NAME都能得到myVariableName、my_variable_name、my-variable-namemyVariableName不会被拆开:snake_case 得到myvariablename- A–Z 以外的字母在代码类风格里会被当作分隔符:
café au lait得到caf_au_lait,中文会被整体去掉
要从 camelCase 或 PascalCase 转换,先在词之间加空格。
几个需要注意的边界情况
缩写词:userId 还是 userID?两种写法都有人用。团队内统一就好。输入 user ID 时转换器输出 userId;输入 userID 则得到 userid,因为它不按大写字母拆分。
数字:item3d 还是 item_3d?习惯不一,转换器通常把数字当作单词的延续。
前导下划线:Python 的 _private 约定表示私有属性,本转换器会去掉它:snake_case 和 kebab-case 得到 private,camelCase 得到 Private。
不用再一个个手改变量名了。立即使用命名风格转换器 →