对命名规则的探讨
文档用途
此文档用于探讨 "设计命名规则时应该做哪些考量".
常见规则
| 名称 | 特点 | 备注 |
|---|---|---|
white space case | 以 空格 分隔单词, 全小写字母 | 名称未被公认 |
period.case | 以 . 分隔单词, 全小写字母 | 名称未被公认 |
kebab-case | 以 - 分隔单词, 全小写字母 | |
PascalCase | 单词之间没有分隔, 每个单词的首字母大写 | |
camelCase | 单词之间没有分隔, 除第一个单词外的首字母大写 | |
snake_case | 以 _ 分隔单词, 全小写字母 | |
SCREAMING_SNAKE_CASE | 以 _ 分隔单词, 全大写字母 |
命名惯例
例如 C# 代码文件的命名惯例就是 PascalCase.
Unity 内的文件夹命名一般用的也是 PascalCase.
Rust 文件命名和函数命名都使用 snake_case.
GitHub Community health file 使用 SCREAMING_SNAKE_CASE.
书写效率
当需要频繁命名时, 书写效率比较重要.
书写效率排序, 越靠前则书写效率越高:
- white space case
- period.case
- kebab-case
- PascalCase
- snake_case
阅读效率
阅读效率高, 有利于我们 "扫一眼就能找到目标".
阅读效率排序, 越靠前则书写阅读越高:
- white space case
- snake_case
- period.case
- kebab-case
- PascalCase
修改效率
如果希望修改某个文件的名字, 并且为了效率而不使用鼠标.
此时我们可以使用一些快捷键:
| 快捷键 | 作用 |
|---|---|
Ctrl+Backspace | 删除至下一个符号位 |
Shift+Ctrl+方向键 | 选中至下一个符号位 |
当光标处于名字的最右侧时, 使用 Ctrl+Backspace 快捷键:
white space case # 原名
white space # 删除了 case
period.case # 原名
period. # 删除了 case
kebab-case # 原名
kebab- # 删除了 case
PascalCase # 原名
# 删除整个名字
snake_case # 原名
snake_ # Unity 中仅会删除 case
# 大多数输入场景中会删除整个名字因此, 如果我们希望在重命名时能够方便地修改某个单词, 应该优先考虑使用:
- white space case
- period.case
- kebab-case
INFO
在 vim 中存在 text object 的概念: PascalCase 和 snake_case 都会被 vim 当做 一个 word,
而其他命名方式都会被 vim 当成 多个 word. 这也会影响修改效率.
中文输入法
考虑到我们在命名时可能会使用中文, 因此需要注意这些问题:
. # 英文句号
。 # 中文句号
_ # 英文下划线
—— # 中文破折号为避免中文输入法带来的问题, 应在可能输入中文的情况下避免使用 . 和 _.
同时也可以考虑 在输入中文时使用英文标点, 也就没有这个问题的困扰了.
文件扩展名
由于文件扩展名是以英文句号 . 开头的, 因此给文件命名时应该避免使用这个字符.
语法习惯
以下命名规则都会倾向于使用英文句式, 短语的语法习惯:
形容词在前, 名词在后 (也可以说是 "定语在前, 宾语在后").
- white space case
- PascalCase
而以下命名规则可以更随意:
- kebab-case
- period.case
- snake_case
INFO
当场景中存在大量物体时, 让名词在前会更有利于阅读.
camera-main
camera-ui
light-directional-sun
light-point-candle路径
应该避免在路径中出现 空格 和 中文字符.
因为 空格 容易出错, 中文字符 可能会显示成乱码.
搜索
在 Unity 中只需要将关键词用 空格 分隔就能搜索, 因此命名规则如何并不影响.
甚至不要求顺序, 例如下图中的情况, 如果搜索框输入 init game, 也能找到图中的文件.

在 Blender 中搜索时, 规则非常严格, 必须按顺序, 不能省略字符.
因此在 Blender 中应该尽可能避免使用书写效率低的命名方式.