跳转至

命名

为了更好的协作与二次开发,您在参与 Echo-Live 的开发时应当遵循此命名规范。

基本规则

命名应当尽可能概括其用意,准确描述其功能。

简写

对于长生命周期变量,请勿使用简写。

对于短生命周期变量,可以使用约定俗成的简写或首字母简写,例如:

  • e —— 首字母简写,可以是事件监听函数传入的事件参数(Event)、元素遍历函数传入的元素参数(Element)。
  • i, j, k... —— 约定俗成的索引编号,取自 Index 首字母,常用于循环体。
  • r —— 首字母简写,可以是返回值(Result)。

某些单词可能有常用的简写方式,例如 db(Database)。您可以通过 Abbreviations.comAcronym Finder 这样的网站查询简写的使用频率,如果使用频率不高则不应该被使用。

请注意,如果某个变量的全称非常复杂以至于其简写也变得复杂,即便其生命周期再短也请勿使用首字母简写,而是使用全称或选用其他简写方式,例如:

  • CJKAndFullWidthSymbolAndEmojiRegExp -> cjkfwsere
  • CJKAndFullWidthSymbolAndEmojiRegExp -> regexp

不过,对于上述这种复杂的变量,建议尽可能使用全称或换个命名思路。

前缀

对于内部变量或内部方法等内部对象,应使用两个下划线 “__” 作为前缀。内部对象仅用于与公共对象作区分,避免混淆或误用,请勿滥用此命名方式。

如果变量内容是通过 JQuery 选择器选择的元素,则以美元符号 “$” 作为前缀。此类变量常被命名为 $sel。另外,如果变量内容是用于快速选择器的字符串,则不应使用此前缀,如 sel。此外,基于习惯,本地化函数被命名为 $t

命名方式

如无特别说明,整个项目的命名一律采用小驼峰命名法,如 printSpeedStart,但有以下例外:

  1. 对于类名,采用大驼峰命名法,如 EchoLiveBroadcast,但不包括将类实例化后的变量名。
  2. 对于对外识别名,如配置项目、API 名称等,采用下划线命名法,如 echo_state_update
  3. 如在特定情况下特定的命名法会引发错误,则视情况采用最合适的命名法。

不能接受的命名方式

  1. 拼音命名 —— 这是绝对不能接受的命名方式,除非该词在英语中没有对应单词或已被英语词典收录并广泛使用。
  2. 不必要的非英语名称 —— 一律使用英语命名,除非所描述的对象仅在特定语言有命名或舶来自特定语言,如 danmaku(弹幕)、emoji(表情符号)。
  3. 阅读困难的命名 —— 如 Oo0oOo0IlIIillIl______sEtTiMeOuT
  4. 易混淆的命名 —— 如 ltem(形似 Item)、fnuciton(形似 function)。
  5. 使用非英语字符 —— 虽然您可以做到,程序似乎也能正常跑,但不代表您可以这么做。

函数

在一些简单的需求中,函数名以动词+名词的格式命名,例如:

  • 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