“计算机科学的两件难事:缓存失效和命名。”
当然这里的命名有着更深层的意思,比如W3C的各种术语。已经有很多教我们如何命名的规范
Naming convention (programming),每个编程语言都有各式各样的命名规范【像CSS就有几套非常有效的规范(OOCSS,BEM,SMACSS,SUITCSS,Atomic...)】但这些规范并不能消除我们的问题,每个程序员或多或少都在编程过程中为变量和函数命名苦恼过。
借用网络上的一个例子试着解释一下:
你要开发一个游戏,有人,可以开枪。人的对象有个走的行为,你把方法命名为Walk(),很简单。枪的对象有个射击的行为,你把方法命名为Fire(),还是很简单。不过这两个对象在画布里需要动起来,你给他们命名为update()。当另一个人看到这个方法时他会有些疑问,这个update是更新什么?要不要持久化到数据库?https://www.quora.com/Why-is-naming-things-hard-in-computer-science-and-how-can-it-can-be-made-easier
这是ITworld发起的一个投票,其中不分年龄不分经验接近半数的人认为命名是最头疼的事情。
Programmers' hardest tasks : ProgrammerHumor 程序员最头疼的事:命名母语是英文的开发者为命名苦恼,非英文母语的开发者更加为此苦恼。当你到github上参与开源项目的贡献的时候,或者准备开源自己的作品的时候,或者设计一个框架的时候,命名会是一个一直伴随你的不大不小的问题。
但开发语言跟语言一样除了语法外当然要堆词汇了,有各种计算机术语大全的书,还有计算机专用词典。但有趣的是开发语言也有很多“方言的词汇”,甚至不同的编程语言还有自己的”方言词汇“,要让别人看懂你的代码你还不得不用上这些方言常用的词汇。如果不是有了解你根本不可能想起这些词汇【好比说初始化就有很多方言(init,boot,launch...)】这就得堆经验了,要多看堆经验是很慢长的过程。
我们平时当然会先查单词,再比较近义词,必要还要Google一下与我们期望表达的关联性。但是还是没有底,还是不满意,对,没有底,不满意。就一个变量名函数名随着迭代的进行已经被我们改了多少次。有时候你巴不得身边有个人直接告诉你。
堆经验的方法是很笨的,没有捷径,多看书和源码。参与的越多经验自然就越多,找个大型的开源项目参与翻译文档是个不错的开始,但如果你并不用到这个项目或者说这个项目与你当前从事的领域关联不大,收效并不明显。因为缺乏实践。
如何不改变我们的平时的习惯就能日积月累的收获变量命名的经验呢?
回顾我们平时的习惯:1.查单词;2. 比较单词语义;3. 比较代码上下文;4.确定命名。
只要把这几个步骤缩短就能节省大量时间。
CODELF就是帮我们缩短这些步骤的一个变量名搜索工具。
Solidot | Codelf通过搜索在线开源平台的项目源码帮开发者给变量命名 Codelf 搜索开源代码帮程序员命名_Open Source 开源_cnBeta.COM支持直接搜索中文,当你查中文的时候,Codelf 会直接查好单词和单词的近义词给你,然后再搜索Github, Bitbucket, Google Code, Codeplex, Sourceforge, Fedora Project上的开源项目的源码匹配出与这些词汇相关的变量名和函数名。Codelf 可以选择开发语言进行搜索,结果会把同个源码文件里匹配的变量名排在一起,如你选择“CSS”然后搜索“product”
你可以立即查看对应的源码,多少能学习到别人的设计,如果代码的业务与自己相投,对梳理自己的业务是有帮助的。
我们求知欲的本能是看到什么想到什么就想立即了解它知道它,过后就不了了之了,每个开发者都有想看源码学习的本能,可惜看源码是一件非常烧脑的过程,Codelf 有让碎片时间看看源码变得轻松有趣,随手掏出手机一搜索就可以打发时间了。如过圣诞节,选择JavaScript语言搜索“圣诞树”就看到一段短小的圣诞树代码,很有趣的算法呢
CODELF当然,你还可以直接查看源码来源的仓库Repo;直接拷贝变量名等。
Codelf会让你的变量命名变得有趣,如果你是个有文学细胞的人,那会更加欢乐了,让我们来搜索一些2015年的热词:
CODELF下面是一些相关连接:
最后是一个找到的与Codelf相关的段子,哈哈:
场景1,话说,今天产品汪又来找我了,我昨天才切完图,肯定是改需求
场景2,尼玛,又要改好友列表,要在里面添加关注状态
场景3,关注,未关注,互相关注,前面两个好命名,后面那个怎么写好呢?作为一个有点英文水平的程序员肯定不会用什么Each-follow之类的,想想就不对劲,但是用什么我还真特么不知道
场景4,看看微博怎么搞的呗,我先找个互相关注的按钮瞧瞧,一点进去就是女神的,可女神没有关注我啊,怎么办
场景5,女神是交互MM啊,我就找个借口说测试一个渣浪,我X,我特么好2,这么明显谁不知道啊,但是我特么还是干了啊,天啦撸啊
场景6,女神关注我了也,赶紧把之前发的一些不正经的微博删除了,别在女神山前损形象啊,我去,我怎么转发了那么多苍老师的。。。太没品了,尼玛,sister是什么鬼,我竟然寂寞到转发韩国妹
场景7,好了,回来看微博的关注按钮吧,可是我X,这是什么鬼命名,我实在看不懂,难道压缩了?
场景8,难倒我了,那我看看twitter的啊,必须啊,人家歪果仁肯定有好的命名
场景9,我得翻墙啊,不然上不去,GFW草泥马啊。
场景10,花了10块钱买了个mz代理总算上去了,可是我特么没人关注我啊,有注意了,叫女神上去关注我呗,这样之前的嫌疑就可以避开了,哈哈,机智如我
场景11,好说歹说女神上去了,又花了10块帮女神买了个代理,本来想请女神吃饭的,怕太明显了被看出来。
场景12,我叼,女神关注我了啊,女神里面也是唯一一个我关注了她,好像荒岛上就我俩个一样,又YY了一把。
场景13,我了个X,Twitter并没有互相关注的按钮,人家直接显示“followrs you”,我去,这太明了了,我们的产品汪真是没法比啊
场景14,我把产品汪喷了一顿,结果人家还是没有改,因为人家给我买罐可乐,我太没种了,竟然就让了
场景15,明天再想吧,命名是大事,就为了这个整天啥活也没干,下班都不好意思走啊。。。。
场景16,我想起来了,有个叫 Codelf 的变量命名神器,我去搜搜索。
场景17,直接搜索 “相互 follow”
神器就是神器啊!!!!此时一万只草泥马打了我的脸