给函数起个好名字—动词选择

简介: 给函数起个好名字—动词选择

选取原则1 避免滥用通用单词

案例1:万能的Get

GetTotalAmount();

获取属性?

获取本地存储内容?

获取网络内容?

获取数据库内容?

获取计算后的内容?

......

案例2:万能的Add

AddCharacter();

添加到头部?

添加到尾部?

中间插入字符?

......

问题:

通用单词可以在很多场景下命名,但不能区分具体函数职责

函数本身的实现途径不同时,难以从函数名得到足够的信息

函数命名动词大全指南:

创建/销毁

动词 用途 示例
Create 创建实例,常用于实例化方法和工厂方法的命名 CreateInstance
Initialize 初始化实例的属性和设置,Initialize本身也可作为类方法用来初始化 InitializeInstance,Initialize
Load 加载配置,根据配置创建内容 LoadFromConfig
Destroy 销毁实例,常用语析构方法 DestroyInstance
Uninitialize 清理实例的属性和设置,通常和Initialize对应 UninitializeInstance,Uninitialize

获取/设置

动词 用途 示例
Get 常用于取属性的类方法命名,也可作为通用获取方法命名 GetStartTime
Fetch 通过网络请求获取内容 FetchAllUsers
Calculate 通过计算获取内容 CalculateTotalAmount
Read 读取(多用于文件,配置等) ReadFile,ReadConfig
Query 查询 QueryRemainingAmount
Find 查找(多用于数据库,集合等),和search相似 FindOrder
Receive 接收(多用于文件,消息等) ReceiveNewMessage
Pull 拉取 PullLastestSourceCode
Set 常用于设置属性的类方法命名,也可作为通用设置方法命名 SetStartTime
Write 写入(文件/配置等) WriteFile,WriteConfig
Put 放入 PutUserWithId
Push 存入,推送(通知) PushNotification

更新

动词 用途 示例
Reset 强调重置(标记,状态) ResetTimer
Refresh 用于命名刷新(多用于页面,缓存等) RefreshCurrentPage
Update 更新(多用于配置,状态等) UpdateUserSetting

添加/移除

动词 用途 示例
Add 用于通用添加方法命名 AddNewStudent
Append 强调在尾部添加(追加) AppendCharacter
Insert 强调插入(可以在任意位置) InsertCharacter
Delete 表示删除,和Remove相近 DeleteDirectory
Remove 表示移除,和Delete相近 RemoveInvalidDeals

启动/停止

动词 用途 示例
Open 开启(多用于开启状态,打开文件等) OpenEnhanceMode
Start 开始(强调开始某个流程) StartPortListening
Launch 发动/启动(多用于启动程序,服务) LaunchAssistService
Close 关闭(多用于关闭状态,关闭文件等) CloseEnhanceMode
Stop 停止(强调流程的终止) StopPortListening
Pause 暂停(强调流程的暂停,有可能后续会继续开启) PausePageLoading
Finish 完成(强调流程的完成) FinishRequesting

集合类型相关数据处理

动词 用途 示例
Filter 过滤,筛选(强调按照某些条件) FilterByName
Merge 合并(有时会带上合并规则) MergeTwoConfig
Concat 拼接(直接在结尾添加) ConcatToArray
Split 分割 SplitInput
Deduplicate 去重(去重完全相同的项) DeduplicateList
Reverse 颠倒,反向排列 ReverseRecord
Sort 排序(有时会带上排序规则) SortDealsByAmount
Fill 填充(一般会进行覆盖) FillAmountList

通用业务数据处理

动词 用途 示例
Parse 解析(解析成某些格式,解析提取某些内容) ParseFromJson,ParseResult
Analyse 分析(不一定能通过简单的方式获取) AnalyseLocation
Convert 类型转换(通常用于从一个类型转换到另一种类型) ConvertToString
Format 格式化数据 FormatToLocaleString
Validate 合法性/有效性的校验 ValidateUserInputs
Ensure 期待值的校验 EnsureUserAge
Compose 组成(一般由多项内容组成一个结果) ComposeMessage
Encode 编码(依赖约定的编码格式) EncodeUrl
Decode 解码(依赖约定的解码格式) DecodeUrl
Encrypt 数据加密(依赖约定的加密算法) EncryptContent
Decrypt 数据解密(依赖约定的解密算法) DecryptContent
Backup 备份(需要注意拷贝方式,避免误导) BackupUserSettings
Restore 恢复 RestoreUserSettings
Import 导入(通常用于按照特定格式的文件转换) ImportFromFile
Export 导出(通常用于转换成特定格式的文件) ExportToFile



目录
相关文章
|
10月前
|
开发者
如何优雅的起个变量名?
如何优雅的起个变量名?
|
小程序 搜索推荐 开发者
如何给你的小游戏起个好名字
嗨!大家好,我是小蚂蚁。今天的这篇文章来自于我的一位学员 @Sing 的分享。很多的小游戏开发者给自己的游戏起名字完全是随性或者凭借感觉,其实给小游戏起名字是有一定的方法的,一个好的名字是能给你的小游戏带来一定的搜索自然流量的。 如果你之前起游戏名字靠的是感觉,不妨好好看一下这篇分享,按照文中的方法分析一下,自己起的游戏名字到底好不好。
123 0
如何给你的小游戏起个好名字
|
JavaScript 前端开发 Java
程序员如何给变量起名字
程序员如何给变量起名字
|
程序员 开发者 Python
命名难,难于上青天
命名难,难于上青天
89 0
|
前端开发 JavaScript 算法
你真的会代码命名吗 ? 优雅学会《如来神掌》 再也不怕不知道如何命名啦!
你真的会代码命名吗 ? 优雅学会《如来神掌》 再也不怕不知道如何命名啦!
230 0
你真的会代码命名吗 ? 优雅学会《如来神掌》 再也不怕不知道如何命名啦!
|
Java
简而不漏,300字Java标识符命名规则规范,看一遍就可以记住,包名类名变量名常量名,让命名有迹可循
简而不漏,300字Java标识符命名规则规范,看一遍就可以记住,包名类名变量名常量名,让命名有迹可循
189 0
结构体定义的名字只是名字而已,还需要利用名字再定义一次
结构体定义的名字只是名字而已,还需要利用名字再定义一次
|
tengine 安全 算法
|
编译器 C语言 C++
C++中函数名字前的&或*
C++中函数名字前的&或*
687 0
C++中函数名字前的&或*
|
数据库
根据ABAP类方法的形式参数名,反查是哪个方法定义了该形式参数
根据ABAP类方法的形式参数名,反查是哪个方法定义了该形式参数
111 0
根据ABAP类方法的形式参数名,反查是哪个方法定义了该形式参数