在编程和软件开发中,常见的命名方式(Naming Conventions)主要有以下 5 种主流风格,每种适用于不同场景:
✅ 1. PascalCase(大驼峰)
- 格式:每个单词首字母大写,无分隔符
- 别名:Upper Camel Case
- 用途:
- 类名(
class UserService) - 接口(
interface UserResponse) - React/Vue 组件名(
function UserProfile()) - 枚举、类型别名等 类型级标识符
- 类名(
- 示例:
UserProfile,ApiService,HttpRequest
✅ 2. camelCase(小驼峰)
- 格式:首单词小写,后续单词首字母大写
- 别名:Lower Camel Case
- 用途:
- 变量名(
let userName) - 函数/方法名(
function getUserInfo()) - 对象属性(
user.isActive)
- 变量名(
- 示例:
firstName,calculateTotal,isLoading
✅ 3. snake_case(蛇形命名)
- 格式:全小写,单词用下划线
_分隔 - 用途:
- Python、Ruby 等语言的变量/函数名
- 数据库字段名(
user_id,created_at) - 环境变量(
DATABASE_URL) - 常量(有时用全大写版)
- 示例:
user_name,api_key,max_retries
🔹 SCREAMING_SNAKE_CASE(全大写蛇形):用于常量
例如:MAX_CONNECTIONS,DEFAULT_TIMEOUT
✅ 4. kebab-case(短横线命名)
- 格式:全小写,单词用短横线
-分隔 - 别名:Lisp Case, Spinal Case
- 用途:
- 文件名(
user-profile.tsx,api-service.ts) - URL 路径(
/user-settings) - HTML/CSS 类名或 ID(
<div class="main-header">) - 命令行工具参数(
--file-name)
- 文件名(
- 注意:不能用于 JavaScript/TypeScript 变量名(因
-是减号运算符) - 示例:
login-form.css,my-component.vue,https://api.com/v1/user-info
✅ 5. Hungarian Notation(匈牙利命名法) ⚠️(已不推荐)
- 格式:前缀表示类型,如
strName,iCount,bVisible - 现状:早期 C/Windows 开发常用,现代语言(TS/JS/Python)已弃用
- 问题:类型信息冗余(TS 有类型系统),降低可读性
📊 快速对比表
| 命名方式 | 示例 | 主要使用场景 |
|---|---|---|
| PascalCase | UserProfile | 类、接口、组件名(TypeScript/Java/C#) |
| camelCase | userName | 变量、函数、属性(JavaScript/TS/Java) |
| snake_case | user_name | Python/Ruby 变量、数据库字段、常量 |
| kebab-case | user-profile.tsx | 文件名、URL、CSS 类名 |
| SCREAMING_SNAKE | MAX_SIZE | 常量(C/C++/Python/环境变量) |
💡 实际应用建议(以 TypeScript 项目为例)
// types.ts
interface UserAccount { // PascalCase → 类型
userId: string; // camelCase → 属性
created_at: string; // snake_case → 若对接数据库字段
}
// user-service.ts // kebab-case → 文件名
export function fetchUserData() { // camelCase → 函数
// ...
}
// constants.ts
export const MAX_RETRY_COUNT = 3; // SCREAMING_SNAKE_CASE → 常量
❌ 常见错误
- 在 JS/TS 中用
kebab-case做变量名:let user-name = "Alice"; // ❌ 语法错误!会被解析为 user 减 name - 混淆文件名和标识符命名:
文件叫UserProfile.tsx(不推荐),但组件名必须是UserProfile(正确)
总结
编程命名的核心原则:统一 + 场景适配。
- 类型用 PascalCase
- 值用 camelCase
- 文件/URL 用 kebab-case
- 数据库/配置用 snake_case
遵循这些规范,你的代码将更专业、更易维护,并与主流生态保持一致。