代码好似程序员手中的兵器,有人使的独孤九剑,有人使的打狗棒。
最近review代码有点多,看到了一些很不“讲究”的代码。本篇打算聊聊我做code review的一点心得,先从变量命名这件小事说起吧。
使用简单易识别的单词
这一条在码农界应该是公认的吧,不要搞太复杂太生僻的单词。有些人偏偏喜欢炫自己的英文水平,不考虑其他同事的感受。所以起名要用一些很常见的单词,不要超过高中水平就行了。
比如需要为“成绩”起名,百度一翻译叫achievement,我们选score就好。
边界要准确
变量的名字要能准确涵盖它的含义,不要超出范围,也不要覆盖不到。这一点尤其在给项目或模块起名字时要注意。
拿我们公司的来举例,我见过一个项目叫17zuoye_frontend,感觉上是整个公司的前端都在里面,事实上这只是众多项目中的一个而已。
还有一个项目,用nodejs重构了前端层,结果把项目命名为nodejs_front,感觉让人摸不着边界。
名字起太小了也不行,将来加别的功能会很别扭。好比你的的招牌挂着黄焖鸡米饭,里面却硬要卖烤鸭。
符合语义
代码是给人看的,或许是给别人,或许是给几个月后的自己。所以描述一定要准确,不要使用语义上有明显出入的名字。
前几天review一个同事的代码,看到这么一行:clientName = true;
我当时就比较懵,这个单词明明是“客户端名称”的意思,怎么会给赋值为true呢?询问之后才知道他要在clientName为某个值的时候判断是否展示头部,为了使用方便就直接这么写了。
所谓语义就是,要符合自然语言的表述习惯。新手经常会有这样的想法,只要代码能跑通,变量和逻辑是否「语义正确」漠不关心。其实这是很不好的,这样的代码会越来越难维护,最后自己写的自己都看不懂。
说到语义还有一点,那就是不要使用太通用的单词,比如value、data这些。都表示一个值,但是完全无从知道它代表的是什么值,最好起具体的名字。
函数名称
有一个同事使用的单词倒是很简单,比如页面有一个选中标签页的功能,他给函数命名为select。这样的问题在于,如果页面中还有其他的选择功能该怎么办呢?在看代码的时候,光看到select完全不知道是要选什么。
所以在给函数命名的时候,我强烈推荐动-宾结构,比如selectTab、checkPrice,有动词有宾语,看代码的是就很容易能对应到页面功能上去。
属性名称
关于属性的命名也同样,看了名字就立马能在页面找到最好。比如你把导航栏叫nav,就不如叫leftNav好,这样我立马就知道是页面左侧的导航栏,而不是顶部。
其实这和我们的自然语言是很类似的,我说“脑袋”,你不知道我想说啥,我说“周杰伦的脑袋”,你脑海中立马就有影像了。所以属性的命名要用偏正短语,说白了就是“xxx的xxx”这样的结构。
以上是最近review代码时关于变量命名的一些感想,再次强调一下,不要以为程序能跑通就万事大吉了。代码是你的思维的展现,混乱的命名行为只能说明你的思维是不清晰的。 感觉有不妥的地方,立马全局替换,不留后患。