前言
在计算机科学中,有许多老大难的问题。其中有两件事情最为困难:缓存失效和命名。
There are only two hard things in Computer Science: cache invalidation and naming things. -- Phil Karlton
命名确实是一件让人极为头疼的一件事情,如果你的词汇量不够多,我可以想象到你在各大翻译网站检索的情景,因为我就是这样。
这样做无可厚非,但是非英语母语的同学极易犯的错误是:直接用母语去查对应的英文单词。这是一个糟糕的情况,因为在没有特定的语境前提下,我们查到的单词往往是不合适甚至错误的。
例如:我们去查 收益 这个词,可能得到的单词有 income、proceeds、profit、earnings等。
所以我们可以直接使用其中一个,命名变量或者方法为xxxIncome、xxxProfit吗?不行,还得考虑语境。
如果这里的收益是在收益管理(Revenue Management)的范畴,那命名就应该依据 revenue 这个单词。很明显的是,这个单词在最初的搜索中是不存在的。
因此我们在查询单词的过程中,需要考虑语境,需要用不同的关键词去搜索,最好的是能找到包含这个单词的例句,例如: 也许你认为做到这里,命名的问题也就解决了。但事实上,得到令人一目了然的命名,还需要花点功夫。大家一定经历过这些情况:每个字我都认识,连在一起就看不懂了、你这个命名太简略了、你这个命名也太长了。
这里给一个真实的例子:aroundTopPromotionRoomNightPoiLowestDiscountActivityName。 这个变量名大家能看出来什么意思吗?
我来简单拆解一下:
- aroundTop:同行中的Top。
- Promotion:促销。
- RoomNight:间夜(酒店在某个时间段内,房间出租率的计算单位)。
- Poi:兴趣点(Point of Interest),用来指代一间房、一个景点、或者一个酒店。
- LowestDiscount:折扣最低的。
- ActivityName:活动名称。
这个变量名称含义是:促销活动带来的间夜数量排名第一的同行酒店,参与的促销活动中折扣最低的活动。 emmmmm。。。忘了它吧,这是一个失败的命名。
上述给出的案例,仅仅是命名过程中,遇到的常见问题中的一小部分,也难怪程序员们对命名问题如此头疼。甚至是在交付压力下,随便先取一个名称。
好吧,赶快给出一个命名工具吧,至少能有个抓手。下面介绍变量命名神器 —— CODELF。
CODELF
介绍
Codelf通过搜索在线开源平台Github, Bitbucket, Google Code, Codeplex, Sourceforge, Fedora Projec的项目源码,帮开发者从中找出已有的匹配关键字的变量名。
codeif支持中文查询,输入中文意思,codeif可以根据需要查询尽可能满足需要的结果,并展示与查询结果相关的支持各种编程语言的代码片段以及代码库。
它同时支持多种编程语言,基本流行得语言,比如C语言,python,java都支持。如果你不想先打开网站再搜索,你可以在你的代码编辑器安装插件,支持vscode、sublime、atom、Idea等等。
功能
设置语言
搜索关键词
搜索关键字(支持中文),给出翻译结果以及匹配的变量名,可以拷贝变量名,也可以浏览相应的代码。
IDEA插件
配置
在插件中搜索(关键词 onlinesearch)并安装 Online Search。 在Keymap中设置快捷键。 这里大家自行设置。 配置搜索参数:
- 搜索源名称:codelf
- 搜索源URL:unbug.github.io/codelf/#%s
- 占位符(也就是我们搜索的关键词):%s
使用
通过快捷键,并使用codelf进行搜索。 查看搜索结果
最后
CODELF不是万能的,也不是必要的,大家还是靴微提高以下英文水平吧。
补充一句格言:
There's two hard problems in computer science: we only have one joke and it's not funny. -- Phillip Scott Bowden