编码规范之命名
1.命名
命名是一个看似简单却值得深究的一个过程。变量、函数、文件等等命名有一些内在的要求:见名知义。一个好的名字可以让人一眼就知道它是做什么的,它往往是一个事物的高度概括。如果一个名字取得不好,那么可能会其他人带来阅读上的困难,甚至引起歧义。变量名和文件名一般采用名词,而函数名一般采用动宾结构。
1.1文件命名
文件命名一般建议采用名词,用大驼峰法。一个文件一般代表着一个类或模块,首先你需要对整个类或模块的定位有一个清晰的了解,才能给它取出一个恰当的名字。对于类而言,你需要明确它具有那些属性和行为;对于模块而言,你需要明确它为了解决什么问题而产生,起到什么作用。
文件开头一般都需要加注释,写清楚作者和编码时间以及功能说明。
例如:
文件名:ForceDirectedLayout
/**
* Created by zhongzh on 2017/6/19.
*力导向布局
*/
1.2变量命名
变量命名一般建议采用类型前缀+有意义的单词组成,用小驼峰法。
局部变量:
s:表示字符串。例如:sName,sHtml;
n:表示数字。例如:nPage,nTotal;
b:表示逻辑。例如:bChecked,bHasLogin;
a:表示数组。例如:aList,aGroup;
r:表示正则表达式。例如:rDomain,rEmail;
fn:表示函数。例如:fnGetHtml,fnInit,fnGetName,fnSetAge;
f :表示文件。例如:fInput;
o:表示以上未涉及到的其他对象,例如:oButton,oDate;
g:表示全局变量,例如:gUserName,gLoginTime;
$:表示Jquery对象。例如:$Content,$Module;这是一种比较广泛的Jquery对象变量命名规范。
dom:表示Dom对象,例如:domForm,domInput;
临时变量(作用域小):str,num,bol,obj,fun,arr,cnt等等
循环变量:i,j,k
1.3函数命名
一个好的函数名一般能通过名字直接获知该函数实现什么样的功能。首先,如果你无法对这个函数给出一个合适的名字,说明你对这段代码将要实现的功能理解还不到位,或者说你对需求的理解还不够充分。其次,如果你的函数名不能正确地反映函数功能,那么你可能就嗅到了“坏代码的味道”(参考《重构》),可能意味着这个函数过大,需要细化为耦合性更小、功能更加独立的几个函数。
函数命名一般建议统一使用动词或者动词+名词的形式:init(),getName()
涉及到布尔逻辑值的函数建议采用is,has,contains代替动词开头:isObject(),hasClass(),containsElements()
常见的一些动词,可以借鉴和参考:
get 获取/set 设置, add 增加/remove 删除
create 创建/destory 移除 start 启动/stop 停止
open 打开/close 关闭, read 读取/write 写入
load 载入/save 保存, create 创建/destroy 销毁
begin 开始/end 结束, backup 备份/restore 恢复
import 导入/export 导出, split 分割/merge 合并
inject 注入/extract 提取, attach 附着/detach 脱离
bind 绑定/separate 分离, view 查看/browse 浏览
edit 编辑/modify 修改, select 选取/mark 标记
copy 复制/paste 粘贴, undo 撤销/redo 重做
insert 插入/delete 移除, add 加入/append 添加
clean 清理/clear 清除, index 索引/sort 排序
find 查找/search 搜索, increase 增加/decrease 减少
play 播放/pause 暂停, launch 启动/run 运行
compile 编译/execute 执行, debug 调试/trace 跟踪
observe 观察/listen 监听, build 构建/publish 发布
input 输入/output 输出, encode 编码/decode 解码
encrypt 加密/decrypt 解密, compress 压缩/decompress 解压缩
pack 打包/unpack 解包, parse 解析/emit 生成
connect 连接/disconnect 断开, send 发送/receive 接收
download 下载/upload 上传, refresh 刷新/synchronize 同步
update 更新/revert 复原, lock 锁定/unlock 解锁
check out 签出/check in 签入, submit 提交/commit 交付
push 推/pull 拉, expand 展开/collapse 折叠
begin 起始/end 结束, start 开始/finish 完成
enter 进入/exit 退出, abort 放弃/quit 离开
obsolete 废弃/depreciate 废旧, collect 收集/aggregate 聚集