变量命名神器 CODELF

5,466 阅读4分钟

前言

在计算机科学中,有许多老大难的问题。其中有两件事情最为困难:缓存失效和命名。

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。 这个变量名大家能看出来什么意思吗?

我来简单拆解一下:

  1. aroundTop:同行中的Top。
  2. Promotion:促销。
  3. RoomNight:间夜(酒店在某个时间段内,房间出租率的计算单位)。
  4. Poi:兴趣点(Point of Interest),用来指代一间房、一个景点、或者一个酒店。
  5. LowestDiscount:折扣最低的。
  6. ActivityName:活动名称。

这个变量名称含义是:促销活动带来的间夜数量排名第一的同行酒店,参与的促销活动中折扣最低的活动。 emmmmm。。。忘了它吧,这是一个失败的命名。

上述给出的案例,仅仅是命名过程中,遇到的常见问题中的一小部分,也难怪程序员们对命名问题如此头疼。甚至是在交付压力下,随便先取一个名称。

好吧,赶快给出一个命名工具吧,至少能有个抓手。下面介绍变量命名神器 —— CODELF。

CODELF

介绍

Codelf通过搜索在线开源平台Github, Bitbucket, Google Code, Codeplex, Sourceforge, Fedora Projec的项目源码,帮开发者从中找出已有的匹配关键字的变量名。

codeif支持中文查询,输入中文意思,codeif可以根据需要查询尽可能满足需要的结果,并展示与查询结果相关的支持各种编程语言的代码片段以及代码库。

它同时支持多种编程语言,基本流行得语言,比如C语言,python,java都支持。如果你不想先打开网站再搜索,你可以在你的代码编辑器安装插件,支持vscode、sublime、atom、Idea等等。

链接: CODELF 相关说明及插件:说明及插件 在这里插入图片描述

功能

设置语言

在这里插入图片描述

搜索关键词

搜索关键字(支持中文),给出翻译结果以及匹配的变量名,可以拷贝变量名,也可以浏览相应的代码。 在这里插入图片描述

IDEA插件

配置

在插件中搜索(关键词 onlinesearch)并安装 Online Search。 在这里插入图片描述 在Keymap中设置快捷键。 在这里插入图片描述 这里大家自行设置。 在这里插入图片描述 配置搜索参数:

  1. 搜索源名称:codelf
  2. 搜索源URL:unbug.github.io/codelf/#%s
  3. 占位符(也就是我们搜索的关键词):%s 在这里插入图片描述

使用

通过快捷键,并使用codelf进行搜索。 在这里插入图片描述 查看搜索结果 在这里插入图片描述

最后

CODELF不是万能的,也不是必要的,大家还是靴微提高以下英文水平吧。

补充一句格言:

There's two hard problems in computer science: we only have one joke and it's not funny. -- Phillip Scott Bowden