命名规范
个人总结的命名规范
😂naming is an art
在日常开发中,好的函数命名能减注释的使用,能简化代码的复杂度,也更能看出当前函数是否符合单一职责原则,为项目整体提升可靠的结构
函数的命名是一个函数最重要的部分没有之一
编程语言常用名规范
| 语言 | 默认命名规范 |
|---|---|
| C、C#、C++ | |
| javascript、java | 大驼峰、小驼峰 |
| python、php |
常见命名规范
- Pascal Case 大驼峰式:GetUserInfo
- Camel Case 小驼峰式:getUserInfo
- 常量用大写字母,下划线分割: USER_NAME、MAX_HEIGHT、HOST等
命名原则
函数命名这块很多人,特别是刚入行者都非常不注重,甚至后随意到用fn(),func(),foo()等来命名一些功能函数,这样给项目后期维护或者其他同事试调带来了常用大的困扰,使程序基本的维护成功以几何级增加,所以函数的命名必须有规可遵,有律可循:
尽量不要使用拼音命名
不要拼音和英文混用(大忌)
单词拼写要准确
函数命名采用:动宾结构
- 动宾结构:
doSomethin、openFile、setName、等
- 动宾结构:
- 属性命名采用:定语+名词
- 定语+名词:
fileName、filePath、maxLength、maxWidth
- 定语+名词:
少用缩写
带状态的命名
- 常见状态:
onXxxxStared、isConnecting、hasName、
- 常见状态:
- 单一职责原则
常用函数命名单词
新手命名函数往往经常采用 get xxxxx, set xxxxxx,经常无法很好的表达函数实际要做什么,而且使用get容易让人误会成网络请求函数,混淆视听。
数据获取常用单词
数据获取主要分为几个大场景:动词+名词
- 通过数据库获取
- 通过配置文件获取
- 通过某个计算得到
- 通过网络请求获取
- 通过已存在的对象的中获取
def queryUserInfo():
常用动词总结
动词是命名的开头,决定这个模块、函数将要采取什么操作,一个函数名字是否成功很大程度去取决它的首个单词。
好的名字往往具备以下几个特点:
- 动词选取要精准
- 名词使用领域词汇
- 函数取名最忌讳"名不副实"
- 多查询条件的函数名字谨慎使用介词by
询问类
| 场景 | 单词 | 示例 |
|---|---|---|
| 询问用户一些权限,向用户发起一个需要确认的交互 | askForXxxxXxxx | askForCameraPermission()询问是否允许使用相机 |
增
| 场景 | 单词 |
|---|---|
| 添加 | add |
| 追加 | append |
| 插入 | insert |
| 创建 | create |
| 初始化 | initialize |
| 加载 | load |
删
| 场景 | 单词 |
|---|---|
| 删除、移除 | delete、remove |
| 销毁 | destroy、 |
| 丢弃 | drop |
| 释放 | release |
打开
| 场景 | 单词 |
|---|---|
| 打开文件 | open |
| 启动 | start |
| 加载文件 | load |
| 提取文件 | extract |
查询
| 场景 | 单词 |
|---|---|
| 从数据对象中获取 | get、acquire |
| 从网络上获取 | fetch |
| 从网络上接收 | receive、pull |
| 从文件中获取 | read |
| 从数据库查找 | query |
| 查找 | search、find |
| 刷新 | refresh |
| 重置 | reset |
改
| 场景 | 单词 |
|---|---|
| 设置数据对象 | set、reset |
| 发送网络请求 | put、send、push |
| 写入文件 | write |
| 本地提交 | submit |
| 取消操作 | cancel |
| 选择 | pick、select |
| 编码/解码 | encode、decode |
| 填充 | fill、 |
| 压缩/解压 | compress、decompress |
| 清空 | flush、clear |
| 打包/拆包 | pack、unpack |
| 增加/减少 | increase、decrease |
| 分隔/拼接 | split、join、concat |
| 过滤/校验/检测 | filter、valid、check |
常用名词总结
动词决定了函数的具体动作,而名词决定了函数具体的操作对象,对于名词,尽量使用领域词汇,不要使用生僻或者大家很少使用的词语。
举个例子:集合的容量通常用capacity、集合实际元素个数用size、字符串长度用length,这种就遵循大家的使用习惯,不要用size去形如字符串的长度。
再比如,假如使用到建造者模式,那么通常会用build作为函数名字,这个时候就不要另辟蹊径,用create来作为函数名字,使用大家约定俗成的命名习惯更容易让你的代码被别人读懂。
尺寸
| 场景 | 单词 |
|---|---|
| 容量 | capacity |
| 大小 | size |
| 长度 | length、len |
上下文
| 场景 | 单词 |
|---|---|
| 实例 | instance |
| 上下文 | context |
位置
| 场景 | 单词 |
|---|---|
| 头部 | header |
| 前面 | front |
| 前一个 | previous |
| 第一个 | first |
| 尾部、后面 | tail |
| 返回 | back |
| 下一个 | next |
| 最后一个 | last |
| 区间 | range、interval |
| 区域 | region |
| 某一部分 | area、section |
| 范围 | section、scope |
| 规模 | scale |
其他常用
| 场景 | 单词 |
|---|---|
| 缓存 | cache |
| 缓冲 | buffer |
| 会话 | session |
| 本地、局部 | local |
| 全局 | global |
| 成员 | member |
| 元素 | element |
| 菜单 | menu |
| 列表 | list |
| 源 | source |
| 目标 | target、destination |
参阅文献:
ccfc164fee29fd547ef3067eeabfd6e1ae9fc1e3