brown pot with green plant on wooden bench

给函数起个好名字—函数中的动词选取

原文地址:https://www.bilibili.com/video/BV193411p7JK?share_source=copy_web

选取原则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
Compress 压缩(依赖约定的算法) CompressOversizedFile
Decompress 解压缩(依赖约定的算法) DecompressOversizedFile