# 中文命名规范
**Repository Path**: remyzane/zh-code-spec
## Basic Information
- **Project Name**: 中文命名规范
- **Description**: 中文代码命名规范
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-12-12
- **Last Updated**: 2026-05-30
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 中文命名规范
## 适用于
已使用中文命名或认同中文必将是国际通用语的研发团队。
尤其适用于已养成英文命名习惯的开发者(按照文档可以无缝切换回中文命名)。
## 命名原则
**不泥古,不媚外;可读为先,效率为本;中文达意,西文取便**
## 可保留的字母符号
**技术标准/协议/格式名称**
XML, HTML, CSS, SQL, HTTP, HTTPS, TCP/IP, URL, URI, UUID, JWT, OAuth, API, Git, Docker, K8s, Linux
**简洁技术词**
id, index, key, value, len, err, ok, buf, ptr, ref, env
**中英混合命名**
不建议在中英文之间使用下划线(中英文边界清晰)
要视觉对齐可以使用大写字母(英文为技术标准/协议/格式名称)
要突出中文可以使用小写字母(英文作为前缀、后缀、标识符)
## 类和实例
英文可以通过首字母大小写来区分类和实例,中文需要添加后缀来区分。
(建议类和实例中文名相同,但类有字母后缀,实例没有)
**具体类**建议后缀加「类」或大写字母,如 M(模型)、T(类型)、D (DTO);
**抽象类**可以加小写字母后缀,如:mx(Mixin);
## 复数对象
中文没有类似英文的单词层面的复数形式,名称中必须包含数据类型后缀(为了代码可读性和编码便捷性(避免个体和群体同名))。
如果某类数据的名称已经约定俗成,则可以不添加类型后缀,如:待办清单、订单明细、键值对、键值映射、路由表。
给类型为「元组」的对象命名,如果要加类型后缀,尽量用「元组」(已经约定俗成的除外,很多内容人们习惯了叫列表)
| 数据类型 | 通用后缀 | 定义 | 示例 |
| ------- | ----- | ----------------------------- | ------------------------- |
| list | 列表 | 有序、可重复、动态增删的元素序列 | 商品列表、待办清单、订单明细 |
| array | 数组 | 同 list,但元素类型固定 | 颜色数组、用户ID数组 |
| tuple | 元组 | 同 list,但不能动态增删 | 版本号元组、坐标元组、键值对 |
| set | 集 | 无序、元素唯一的数据集合 | 权限集、标签集 |
| dict | 字典 | 由键值对组成的映射结构 | 配置字典、键值映射、路由表 |
| queue | 队列 | 先进先出(FIFO)的线性数据结构 | 任务队列、消息队列 |
| stack | 栈 | 后进先出(LIFO)的线性数据结构 | 操作栈、函数调用栈 |
## 状态定义
英语使用固定句式和词态,状态命名比较简单,统一用:**is_xxx**。
中文不建议使用「是否XXX」如:「if (是否弹出菜单) {}」 从名称看根本看不出到底是还是否。
建议根据具体情况处理:
### 纯行为(动词)可根据词态
| 类别 | 推荐格式 | 示例 |
| -------- | --------------- | --------------------------------------------- |
| 完成态 | 已xx | 已激活、已保存、已同步 |
| 进行态 | xx中 | 加载中、上传中、处理中 |
| 否定态 | 未xx、非xx | 未登录、未验证、非管理员 |
| 静态 | 直接用形容词 | 有效、就绪 |
**枚举状态**可使用「xx + 状态」命名,如:「const 任务状态: '进行中' | '已完成' = '进行中';」
**一个事物不只一种状态时优先使用枚举状态**
### 行为加对象(动词+名词)使用倒置(名词+动词)
动作使用「动词 + 名词」如:
把 **弹出菜单** 作为方法/函数名
布尔状态使用「名词 + 动词」,如:
let **菜单弹出**: boolean = false; // if (菜单弹出) {} 」即可以表示菜单**要弹出**也可以表示菜单**已弹出**)
*(适用于结果驱动 / 简单交互,如:普通 React、Vue 程序)*
状态对象使用「名词.动词 + 态」,如:
let 菜单: { **弹出态**: boolean }; // if (菜单.弹出态) {} 」即可以表示菜单**要弹出**也可以表示菜单**已弹出**)
*(适用于结果驱动 / 简单交互,如:普通 React、Vue 程序)*
枚举状态使用「名词 + 状态」(动词作为枚举值的组成部分),如:
let **菜单状态**: '要弹出' | '已弹出';
*(适用于过程驱动 / 复杂交互,如:弹出期间需要自行显示复杂特效)*
**一个事物不只一种状态时优先使用枚举状态**
## 布尔前缀(中英对照)
| 英文 | 中文 | 使用场景 | 示例 |
| -------- | ---------------- | --------------- | --------------------------------- |
| has | 有、没 | 拥有关系 | 有权限、没问题、有搞头 |
| can | 能、不能 | 能力/权限 | 能发射、能摧毁、不能更改 |
| needs | 需、无需 | 客观需求 | 需更新、需验证、无需在意 |
| should | 建议、不建议 | 策略建议 | 建议D方案、不建议B方案 |
## 高频动词(中英对照)
| 英文 | 中文 | 使用场景 |
| -------- | -------- | ----------------------------------------------------- |
| get | 获取 | 返回值,无副作用 |
| set | 设置 | 赋值,可能触发校验 |
| add | 添加 | 向集合插入元素 |
| remove | 移除 | 从集合删除元素 |
| load | 加载 | 从磁盘/数据库读入内存 |
| save | 保存 | 写入持久化存储 |
| fetch | 拉取 | 从远程(API/网络)获取 |
## 具体命名规范
- **[数据库](数据库.md)** - 数据库对象命名规则
## 中文编程工具
- [VSCode 中文代码补全插件](https://marketplace.visualstudio.com/items?itemName=chinese.vscode-zh-completion)
## 规范中文命名,提升代码质量! 🎉