# 代码命名规范

## 各语言/场景命名规则总表

| 类型 | 规则 | 示例 |
|:----|:-----|:-----|
| 类名 | 大驼峰（PascalCase） | `UserService`, `ConfigParser` |
| 函数/方法 | 小驼峰（camelCase） | `getUser()`, `formatTime()` |
| 变量/参数 | 小写蛇形（snake_case） | `user_list`, `device_id` |
| 常量 | 全大写蛇形（UPPER_SNAKE） | `MAX_RETRY_COUNT`, `DEFAULT_TIMEOUT` |
| 文件名 | 小写蛇形 | `user_service.js`, `config_parser.js` |
| 目录名 | 小写蛇形 | `utils`, `global_func`, `hook_func` |
| 数据库表名 | 小写蛇形复数 | `users`, `order_items` |
| 数据库字段 | 小写蛇形 | `created_at`, `user_id` |
| 环境变量 | 全大写蛇形 | `NODE_ENV`, `API_BASE_URL` |
| CSS 类名 | 小写连字符 | `btn-primary`, `card-header` |
| CSS 自定义属性 | 双连字符 | `--color-primary`, `--spacing-md` |

## 命名原则

1. **见名知意**：名称必须清晰表达用途，不要用缩写（除非通用）
   - ✅ `getUserList`, `formatDate`, `maxRetryCount`
   - ❌ `getUL`, `fd`, `mrc`
2. **动词开头**：函数名以动词开头
   - ✅ `createUser()`, `deleteFile()`, `validateForm()`
   - ❌ `userCreation()`, `fileDeletion()`
3. **布尔值用肯定语态**
   - ✅ `isVisible`, `hasPermission`, `canEdit`
   - ❌ `notHidden`, `noPermission`
4. **统一术语**：同一概念使用同一词汇
   - ✅ 统一用 `get` 表示获取，不要混用 `get`/`fetch`/`retrieve`/`query`
   - ✅ 统一用 `remove` 表示删除，不要混用 `remove`/`delete`/`destroy`

## JavaScript/Node.js 专项规范

| 场景 | 规则 | 示例 |
|:----|:-----|:-----|
| 模块导出 | `module.exports = { ClassName }` | `module.exports = { UserService }` |
| 构造函数 | 大驼峰 | `new UserService()` |
| 私有方法 | 下划线前缀 | `_validateInput()`, `_formatData()` |
| 事件处理 | `on` + 事件名 | `onClick`, `onChange`, `onSubmit` |
| 回调参数 | `callback` 或 `cb` | `callback(err, result)` |
| Promise | 简洁链式 | `.then().catch()` |
| async/await | 优先使用 | `await getUser()` |

## 文件命名规则
- 组件文件：`ComponentName.jsx` / `ComponentName.vue`
- 工具模块：`util_name.js`
- 配置文件：`config.环境.json`
- 测试文件：`module_name.test.js` / `module_name.spec.js`

## 禁止行为
- ❌ 禁用拼音命名（除非是品牌名）
- ❌ 禁用单字母变量（除循环索引 `i`, `j` 和数学运算）
- ❌ 禁用歧义缩写
- ❌ 禁用不同命名风格混用（一个文件内统一风格）
