我的职业生涯应了那句话,不是在写BUG,就是在改BUG,而其他时间都在纠结给变量起什么名字。
◆ 一些命名建议
查过很多资料,有一些觉得不错的建议,工作中一直都在使用,受益很多。
1. 可以拼读的标识符
- 标识符最好采用英文单词或其组合,便于记忆和阅读,
- 尽量不使用汉语拼音来命名,一定要的话,建议用中文全拼且以连字符进行分隔
- 不要出现仅靠大小写区分的相似的标识符
- 除非必要,不使用数字或较奇怪的字符
2. 善用缩写
程序中的英文单词一般不会太复杂,用词应当简练准确,尽量符合“min-length && max-information”原则。
- 较短的单词,缩写时去掉非前置的元音
- 较长的单词,保留第一个和最后一个字母
- 去除无用的后缀,ing、end
- and、or、the 这些虚词可以省略
- 确保不要改变变量的含义
若使用特殊约定或缩写,则要有注释说明。应该在源文件的开始之处,对文件中所使用的缩写或约定,特别是特殊的缩写,进行必要的注释说明。
3. 语义性更强的标识符
- 变量名应当使用“名词”或者“形容词+名词“
- 方法名应当使用”动词“+”名词“
- 用正确的反义词组命名具有互斥意义的变量或相反动作的方法增强相关性
- 最好让布尔变量的标识名隐含明确的真假含义
- done:事情完成前后的状态
- error:错误发生前后的状态
- found:目标是否找到的状态
- success/ok:事情是否成功的状态
◆ 一些常用词汇
记录了一些日常使用频率较高的词汇。
1. 关联性
作为点缀使用,可以增强其相关性。
全词 | 缩写 | 涵义 | 全词 | 缩写 | 涵义 |
---|---|---|---|---|---|
addition | add | 增加 | delete | 删除 | |
addition | add | 添加 | remove | 移除 | |
addition | add | 加 | subtraction | sub | 减 |
asynchronization | asyn | 异步的 | synchronization | sync | 同步的 |
before | 在…之前 | after | 在…之后 | ||
begin | 开始 | end | 结束 | ||
best | opt | 最优的 | worst | 最差的 | |
capture | capt | 捕捉 | release | 释放 | |
create | 创建 | destroy | 销毁 | ||
cut | 剪切 | paste | 粘贴 | ||
dynamic | 动态的 | static | 静态的 | ||
encode | 编码 | decode | 解码 | ||
first | 第一个 | last | 最后一个 | ||
formal | 正式的 | temporary | tmp | 临时的 | |
get | 获取 | put | 存储 | ||
get | 获取 | set | 设置 | ||
header | 页眉 | footer | 页脚 | ||
increase | inc | 增加 | decrease | dec | 减少 |
increment | 增量 | decrement | 减量 | ||
insert | 插入 | delete | 删除 | ||
known | 已知的 | unknown | unk | 未知的 | |
lock | 锁定 | unlock | 解锁 | ||
maximum | max | 最大值 | minimum | min | 最小值 |
multiply | mul | 乘 | division | div | 除 |
next | 下一个 | previous | prev | 前一个 | |
old | 旧 | new | 新 | ||
open | 打开 | close | 关闭 | ||
positive | pos | 正 | negative | neg | 负 |
public | 公共的 | private | 私有的 | ||
request | req | 请求 | response | resp | 响应 |
root | 根 | leaf | 叶 | ||
root | 根 | tail | 尾 | ||
send | 发送 | receive | recv | 接收 | |
show | 显示 | hide | 隐藏 | ||
source | src | 源 | destination | 目的 | |
source | src | 源 | target | 目标 | |
start | 开始 | stop | 停止 | ||
summation | sum | 求和 | average | avg | 平均 |
up | 向上 | down | 向下 | ||
vertical | vert | 垂直的 | horizontal | horz | 水平的 |
2. 动词性
全词 | 缩写 | 涵义 | 全词 | 缩写 | 涵义 |
---|---|---|---|---|---|
calculate | calc | 计算 | package | pkg | 打包 |
change | chg | 改变 | 打印 | ||
check | 校验 | refresh | 更新 | ||
click | clk | 点击 | register | reg | 注册 |
compare | cmp | 比较 | render | 渲染 | |
control | ctrl | 控制 | repeat | rpt | 重复 |
convert | 转换 | revert | 恢复 | ||
copy | cpy | 复制 | rollback | 回退 | |
current | cur | 当前的 | save | 保存 | |
define | def | 定义 | select | 选择 | |
do | 执行 | select | 选择 | ||
edit | 编辑 | statistic | stat | 统计 | |
escape | esc | 退出 | submit | 提交 | |
execute | exec | 执行 | test | 测试 | |
initialize | init | 初始化 | total | 全部的 | |
login | 登录 | translate | trans | 翻译 | |
make | mk | 制造、形成 | trigger | trig | 触发 |
middle | mid | 中值 | update | upd | 更新 |
move | 移动 | upgrade | upg | 升级 |
3. 名词性
全词 | 缩写 | 涵义 | 全词 | 缩写 | 涵义 |
---|---|---|---|---|---|
address | addr | 地址 | length | len | 长度 |
administrator | adm | 管理员 | library | lib | 库 |
application | app | 应用程序 | link | lnk | 链接 |
argument | arg | 实参 | list | 列表 | |
array | arr | 数组、集合 | logical | 逻辑 | |
assemble | asm | 组装 | main | 主要 | |
background | bg | 背景 | manage | man | 帮助 |
backup | 备份 | manager | mgr | 经理 | |
birth | 初始 | memory | mem | 内存 | |
bitmap | bmp | 位图 | message | msg | 消息 |
buffer | buf | 缓冲区 | node | 节点 | |
button | btn | 按钮 | number | num | 数量、编号 |
callback | 回调 | object | obj | 对象 | |
cell | 单元格 | offset | ofs | 抵消、偏移量 | |
character | char | 字符 | operand | opnd | 操作数 |
color | 颜色 | operator | optr | 操作者 | |
column | col | 列 | oracle | orcl | 甲骨文数据库 |
command | cmd | 命令 | orgnization | org | 组织 |
configuration | config | 配置 | original | orig | 原件 |
container | cntr | 容器 | packet | pkt | 消息包 |
controller | 控制器 | panorama | pano | 全景 | |
coordinates | coord | 坐标 | parameter | param | 参数(形参) |
count | 计数器 | password | pwd | 密码 | |
cursor | crsr | 游标 | picture | pic | 图片 |
cylinder | cyl | 圆柱 | point | pt | 点 |
database | db | 数据库 | pointer | ptr | 指针 |
date | dat | 日期 | position | pos | 位置 |
debug | 调试 | procedure | proc | 过程 | |
default | def | 默认 | process | 流程 | |
destination | dest | 目的 | program | prg | 程序 |
detail | 明细 | properties | prop | 属性 | |
device | dev | 设备 | record | rcd | 记录 |
dialog | dlg | 对话框 | rect | rc | 矩形 |
dictionary | dict | 字典 | reference | ref | 引用 |
difference | diff | 差异 | region | 地区 | |
director | 主管 | resource | res | 资源 | |
directory | dir | 目录 | result | res | 结果 |
display | disp | 显示 | return | ret | 返回 |
divide | div | 划分 | row | row | 行 |
document | doc | 文档 | scene | 场景 | |
domain | 域 | screen | scr | 屏幕 | |
double | 双精度 | second | sec | 秒 | |
driver | drv | 驱动 | segment | seg | 段 |
entity | 实体 | Sequence | seq | 序列 | |
environment | env | 环境 | server | svr | 服务 |
error | err | 错误 | signal | sig | 信号 |
extend | ex/ext | 扩展 | source | src | 源头 |
field | 字段 | stack | stk | 栈 | |
flag | 标志 | stance | 立场 | ||
float | 浮动、浮点 | standard | std | 标准 | |
form | frm | 表单 | status | stat | 状态 |
frame | frm | 框架/帧 | storage | 储藏 | |
frequency | freq | 频率 | stream | 流 | |
function | fn/func | 函数 | string | str | 字符串 |
global | 全局、全球 | switch | 开关 | ||
grid | grd | 网格 | system | sys | 系统 |
group | 组 | table | tbl | 表 | |
header | hdr | 开始、开头 | target | 目标 | |
hexadecimal | hex | 十六进制 | text | txt | 文本 |
image | img | 图像 | timestamp | ts | 时间戳 |
implement | impl | 实现 | transation | tran | 事务 |
index | idx | 索引、指示 | user | usr | 用户 |
information | info | 信息 | utility | util | 实用程序 |
instance | ins/inst | 实例 | value | val | 值 |
interrupt | intr | 中断 | variable | var | 变量 |
iteration | iter | 循环、迭代 | version | ver | 版本 |
lable | 标签 | virus | vir | 病毒 | |
layout | 布局 | window | wnd | 窗口 |
其中一些可以作为点缀使用时,尽量放在尾部,能保证标识符的一致性和对称性,使之可读性更强,更加优雅。
// 正例
int tempTotal;
int testTotal;
int tempAverage;
int testAverage;
// 反例
int totaltemp;
int totaltest;
int averagetemp;
int averagetest;