命名
为了更好的协作与二次开发,您在参与 Echo-Live 的开发时应当遵循此命名规范。
基本规则
命名应当尽可能概括其用意,准确描述其功能。
简写
对于长生命周期变量,请勿使用简写。
对于短生命周期变量,可以使用约定俗成的简写或首字母简写,例如:
e
—— 首字母简写,可以是事件监听函数传入的事件参数(Event)、元素遍历函数传入的元素参数(Element)。i
,j
,k
... —— 约定俗成的索引编号,取自 Index 首字母,常用于循环体。r
—— 首字母简写,可以是返回值(Result)。
某些单词可能有常用的简写方式,例如 db
(Database)。您可以通过 Abbreviations.com、Acronym Finder 这样的网站查询简写的使用频率,如果使用频率不高则不应该被使用。
请注意,如果某个变量的全称非常复杂以至于其简写也变得复杂,即便其生命周期再短也请勿使用首字母简写,而是使用全称或选用其他简写方式,例如:
CJKAndFullWidthSymbolAndEmojiRegExp
->cjkfwsere
CJKAndFullWidthSymbolAndEmojiRegExp
->regexp
不过,对于上述这种复杂的变量,建议尽可能使用全称或换个命名思路。
前缀
对于内部变量或内部方法等内部对象,应使用两个下划线 “__
” 作为前缀。内部对象仅用于与公共对象作区分,避免混淆或误用,请勿滥用此命名方式。
如果变量内容是通过 JQuery 选择器选择的元素,则以美元符号 “$
” 作为前缀。此类变量常被命名为 $sel
。另外,如果变量内容是用于快速选择器的字符串,则不应使用此前缀,如 sel
。此外,基于习惯,本地化函数被命名为 $t
。
命名方式
如无特别说明,整个项目的命名一律采用小驼峰命名法,如 printSpeedStart
,但有以下例外:
- 对于类名,采用大驼峰命名法,如
EchoLiveBroadcast
,但不包括将类实例化后的变量名。 - 对于对外识别名,如配置项目、API 名称等,采用下划线命名法,如
echo_state_update
。 - 如在特定情况下特定的命名法会引发错误,则视情况采用最合适的命名法。
不能接受的命名方式
- 拼音命名 —— 这是绝对不能接受的命名方式,除非该词在英语中没有对应单词或已被英语词典收录并广泛使用。
- 不必要的非英语名称 —— 一律使用英语命名,除非所描述的对象仅在特定语言有命名或舶来自特定语言,如
danmaku
(弹幕)、emoji
(表情符号)。 - 阅读困难的命名 —— 如
Oo0oOo0
、IlIIillIl
、______
、sEtTiMeOuT
。 - 易混淆的命名 —— 如
ltem
(形似Item
)、fnuciton
(形似function
)。 - 使用非英语字符 —— 虽然您可以做到,程序似乎也能正常跑,但不代表您可以这么做。
函数
在一些简单的需求中,函数名以动词+名词的格式命名,例如:
sendMessage()
setValue()
getData()
killTask()
isArray()
为了满足更多需求而产生的变体函数,通常以动词+名词+介词+名词的格式命名,例如:
getItemById()
sendMessageToServer()
saveFileAsImage()
如果函数所处理的对象是显而易见的或就是自身对象,可以仅使用动词,例如:
message.send()
task.kill()
list.push()
对于仅提供数据的静态函数或 get/set 函数,可以仅使用名词,例如:
list.length
map.size
DialogComponent.input()
常用动词参考
数据操作
单词 | 描述 |
---|---|
add |
增加 |
check |
检查 |
clone |
(深层的)克隆 |
copy |
(浅层的)复制 |
delete |
删除 |
fill |
填充、覆盖 |
filter |
过滤 |
get |
获取 |
insert |
插入 |
select |
选择 |
set |
设置、写入 |
reset |
重置 |
数据查找与过滤
单词 | 描述 |
---|---|
filter |
(在数据集中)过滤 |
find |
(在数据集中)查找第一个匹配项 |
query |
(在结构化数据中)查询 |
search |
(在非结构化数据中)搜索 |
数据存取
单词 | 描述 |
---|---|
load |
加载 |
reload |
重载 |
save |
保存 |
unload |
卸载 |
对象操作
单词 | 描述 |
---|---|
change |
(可能是整体的)更改 |
clear |
(在容器中)清空 |
create |
创建(结果是可预期的) |
destroy |
彻底销毁 |
generate |
生成(自动化的,结果是不可预期的) |
join |
(在容器中)加入 |
modify |
(局部的)修改 |
remove |
(在容器中)移除 |
实例对象操作
单词 | 描述 |
---|---|
close |
关闭 |
hide |
(在视觉上)隐藏 |
init |
初始化 |
kill |
立即清除 |
open |
打开 |
show |
(在视觉上)显示 |
糟糕的动词
这些单词不应该作为动词使用。
单词 | 描述 | 推荐单词 |
---|---|---|
new |
不是动词,且易与关键字混淆。 | create |