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

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

选取原则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



目录
相关文章
|
JavaScript C# 开发工具
22款Visual Studio Code实用插件推荐
Visual Studio Code是一个轻量级但功能强大的源代码编辑器,轻量级指的是下载下来的Visual Studio Code其实就是一个简单的编辑器,强大指的是支持多种语言的环境插件拓展,也正是因为这种支持插件式安装环境开发让Visual Studio Code成为了开发语言工具中的霸主,让其同时支持开发多种语言成为了可能。俗话说的好:“工欲善其事,必先利其器”,安装一些实用插件对自己日常的开发和工作效率能够大大的提升,避免996从选一款好的开发插件开始。以下是我整理的一些比较实用的Visual Studio Code插件希望对大家有用,大家有更好的插件推荐可在文末留言🤞。
636 0
|
JSON JavaScript 前端开发
Controller 层编码规范
Controller 层编码规范
micropython esp8266+ssd1306(OLED) 显示中文(示例)
1.Adafruit_SSD1306 OLED显示库使用Adafruit_SSD1306:https://github.com/adafruit/Adafruit_SSD1306 连接示例: 库使用示例: >>> from ...
7667 0
|
计算机视觉 Python
python基于opencv工具掌纹主线提取
我们将在这篇文章中使用Python和OpenCV库来找出我们手掌中的主线。
|
缓存 Shell 开发工具
git 基本 使用和.gitignore文件不生效
git 基本 使用和.gitignore文件不生效
277 0
|
设计模式 Java 关系型数据库
【Java笔记+踩坑汇总】Java基础+JavaWeb+SSM+SpringBoot+SpringCloud+瑞吉外卖/谷粒商城/学成在线+设计模式+面试题汇总+性能调优/架构设计+源码解析
本文是“Java学习路线”专栏的导航文章,目标是为Java初学者和初中高级工程师提供一套完整的Java学习路线。
892 37
|
设计模式 算法 Java
各种奇葩变量名合集
一个好的变量名能让读代码的人(包括写的人),身心舒畅,但一个“奇葩”的变量名可能会逼疯一个程序员。今天是各种各样的奇葩变量名大赏!!!!!!在编程过程中,好的变量命名是非常重要的。一个好的变量名能够清晰地表达变量的含义和作用,从而提高代码的可读性和可维护性。然而,有些时候,由于种种原因,开发者会使用一些非常奇特或者奇葩的变量名。本文将总结一些常见的奇葩变量名,并分析其原因和可能的改进方法。
318 1
|
存储 人工智能 搜索推荐
整合长期记忆,AI实现自我进化,探索大模型这一可能性
本文探讨了通过整合长期记忆(LTM),AI模型能否实现自我进化,以提升处理新任务和适应环境的能力。LTM能帮助模型存储和利用长期信息,提高决策质量和服务个性化水平。文章还讨论了LTM整合的挑战及解决方案,以及如何借鉴人类记忆机制设计有效的LTM策略。[论文链接](https://arxiv.org/pdf/2410.15665)
653 17
|
存储 数据管理 Linux
Linux - 记录问题:docker 迁移 更改镜像默认位置的注意事项
Linux - 记录问题:docker 迁移 更改镜像默认位置的注意事项
415 0
如何将 2024-11-26 20:55:26 转换成 OffsetDateTime 格式?
如何将 2024-11-26 20:55:26 转换成 OffsetDateTime 格式?
181 0