IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> 如何给函数命名?解救单词量匮乏 -> 正文阅读

[数据结构与算法]如何给函数命名?解救单词量匮乏

一、问题

  1. 由于单词量的匮乏,发现写代码的时候,似乎只会使用get,set,send,find,start,make等简单单词。这些单词很多时候能表达的意义非常有限。
  2. 比如,从一个栈的数据结构中,取出一个元素。取出之后,这个元素就不在这个数据结构中了。此时如果使用get_element,能表达这个意思吗?可能使用pop_element更合适。
  3. 比如,我想获取栈中的第N个元素的值,我要继续使用get吗?写成get_element_value?获取值是可以使用get的。
  4. 同样都是获取,怎么写能够让代码更可读?我觉得需要积累一些常用的在编程中的单词的用法。

二、整理一些常用的词

  • send 表示发送。有些时候使用其它的词会更好。
send 近义词释义和使用场景
deliver递送。交付。从A位置运到B位置。从A手上,交到B手上。有些关注这种所有关系的变化,刚开始是属于A的,现在交给B了。 比如:web上的数据从前端交付到后端。 就是送过去了。
dispatch派遣任务,当要把某个event交给线程或者进程任务来处理,使用dispatch. 。比如 select_dispatch 函数,将select函数返回的事件派遣给一个任务来处理。
announce一般是广播通知。也就是,一次性通知很多对象的时候。比如:多个对象都关注target目标对象,目标对象变化的时候,可以通过announce广播通告。
distribute分发。感觉是将一个大的东西,分成多个小的。比如,要对10的20次方个数据进行排序。使用单线程太慢,就可以分给20个线程来处理。这种情况,使用distribute分发比较合适。
route按照某个路线发送。在需要指定路径的情况下,使用route。比如:要给某个服务器发送消息,需要先给它的代理发送,则可以使用route来发送。send就不能表达这层意思。
  • find 表示 发现,找到。find一般是已经找到了,isFound,类似这样的使用。如果要表达过程,可以使用find_out_xxx();
find 近义词释义和使用场景
search搜寻,搜索。表示不知道结果,要找找才能知道。 比如二分查找,binary_search();
extract取出,提取。比如:接收到一段HTTP报文,你要获取其中cookie。可以使用extract_cookie();别用find_cookie();了。如果你希望返回cookie的指针指向,使用locate更好。
locate找出xxx的精确位置。比如:定位数组中=2的元素,返回下标 。这个过程中,我关注的是这个元素的下标。使用locate_element();
  • start 表示开始。但是表达的非常广泛。可以说,启动一个任务,启动一台电脑。
start 近义词释义和使用场景
launch用来表示启动一个流程。比如:发起一个请求。(源自libevent源码)launch_request。 和start不同,start表示开始做什么,比较广泛,比如,start_reading,开始读数据。
begin开始。一般强调起始位置,或者起始时间点。所以用于获取范围的时候。
  • make,制造,做,组装。make往往用于组装什么。所以,make函数的参数,一般是一些配件,然后经过xxx工序组装。
make 近义词释义和使用场景
create是创造,让一个不存在的对象存在。比如:创建一个线程。pthread_create.
build一般指的是建造房屋。
generate产生。生成。比如:生成一个key.生成一个随机数。 感觉不是由谁谁谁创造的什么,而是给一个输入,通过什么工序,自动生成的。比如,发电,发热。不关注主语。
compose组合,组成。这个表示的就是由一些成员组合起来。和make有不同。
new也是创造,指的应该是全新的,默认的。和create 相比,new 是一个全新默认的对象。
construct构造,组建,创建。 可用来构造一个对象。这里的参数和make的参数有区别,make 参数一般是一些配件,比如,通过from/to/via头域组装一个Sip请求。但是construct主要是构造,它的参数不全是配件。 比如:构造一个To对象。SipConstructTo(); 。
  • end 。结束,终止。
end近义词释义和使用场景
end表示过程结束或者终止。表示破灭,末端,一切都结束了。所以我觉得,end可能包含了stop,并且将用到的资源都回收了。
terminate合同,协议等终止。感觉是A和B保持着某种联系,现在这种联系被终止了。 比如在网络协议的编程中可以被用到。
finish普通的完成某事。finish_read();读取结束。
complete完成,做成某事。一般是被动语态。is_completed();是否已经完成了。
stop停止,中断。事情停止或者中断。比如:正在读取,因为某种原因停止了读取。stop_reading();
  • get ,获得。一般表示不费力的获取。也就是,如果get的时候需要经过大量的计算,就不要用get.
get使用时候可能使用这些替换释义和使用场景
pop弹出,就像子弹从弹夹出来一样。一般数据从堆,栈中弹出来一个元素。比如:stack_pop();
download下载,比如你可能GetPage();获取某个网页。这样就不好,使用DownloadPage可能更能表示。
extract提取,有时候,需要从某个text body 中获取 某一个关键词,get。可能不如使用extract。有提取的意思。
  • 一些 bool 判断的函数命名
名字使用
allow/disallow允许/不允许。允许打电话 allow_call();
enable/disable使能/禁用。is_call_a_enable(); 允许 打电话给A.
need需要。need_call_110();需要拨打110;
  • 一些字符串处理了常用的词。
名字使用
insert插入,指定某个位置插入。
replace替换某部分
add添加
remove/delete删除
split拆分,使用某个分隔符拆分。
join/connect连接结合,和split对应。
match匹配。
  • 一些反义词
pause,暂停resume,继续。
pop,弹出。push,压入,用于堆栈数据结构
reserve,保存erase,擦除
updown
getset
firstlast
beginend
construct/createdestroy
  • 描述数量的词
number数字,号码。也有数量的意思。但是number表示的意思比较广泛,如果只是单纯的要表示数量,还是觉得使用quantity会好些。
count计数。感觉使用于计数,数数的时候 。 比如,你要计算一个链表的长度,并且返回。countSize(); 有突出过程。
size大小。一般表示轻量级的获取一个大小。比如:list_size();获取链表的长度。 但这里一般不会去计算了,一般就是直接return 的。是轻量级的。
quantity数量。比如一个链表中的元素数量。是名词。可以作为一个结构体成员。

三、参考

  • 《编写可读性代码的艺术》
  • 一些其它的源码。

四、最后

  • 要保持更新和扩展
  • 需要记录一些实践中使用的场景。
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-07-14 23:11:55  更:2021-07-14 23:13:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 8:00:54-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码