变量命名那点小事

简介:

代码好似程序员手中的兵器,有人使的独孤九剑,有人使的打狗棒。

最近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代码时关于变量命名的一些感想,再次强调一下,不要以为程序能跑通就万事大吉了。代码是你的思维的展现,混乱的命名行为只能说明你的思维是不清晰的。 感觉有不妥的地方,立马全局替换,不留后患。


本文转自吕大豹博客园博客,原文链接:http://www.cnblogs.com/lvdabao/p/6401412.html,如需转载请自行联系原作者

相关文章
|
程序员
程序员变量命名神器——CodeLf
作为程序猿,最头疼的是不是觉得变量名、方法名不会取名字,现在推荐款神器 -- CodeLf 。有了这个,以后代码的变量名就是 so easy 了,下面给大家讲解一下如何使用。
1583 0
程序员变量命名神器——CodeLf
|
25天前
|
JavaScript 前端开发 Java
万万没想到,'this'关键字的真正威力
万万没想到,'this'关键字的真正威力
15 1
|
5月前
|
前端开发 程序员 PHP
程序员还在为变量取名苦恼,那是因为你不知道,这个变量命名神器
程序员还在为变量取名苦恼,那是因为你不知道,这个变量命名神器
89 0
|
7月前
|
搜索推荐 程序员 开发者
那些程序员们约定俗成的规矩
在程序员的世界里,有一些约定俗成的规矩,它们成为了程序员文化的一部分。这些规矩不仅仅是技术层面的,更是一种共同的认知和行为准则。与此同时,在工作中,我们经常会遇到一些不守“码徳”的程序员,他们的代码不讲究规范性,给项目带来了诸多麻烦。那么本文就来聊聊关于一些程序员们约定俗成的规矩,以及那些不规范的编程行为中最令人头疼的问题。
76 1
那些程序员们约定俗成的规矩
|
自然语言处理 编译器 Linux
C++ 函数重载:女友说的话到底是什么意思?
C++ 函数重载:女友说的话到底是什么意思?
86 0
C++ 函数重载:女友说的话到底是什么意思?
课外闲谈10.函数重载的二义性
课外闲谈10.函数重载的二义性
64 0
|
前端开发 JavaScript 索引
让学前端不再害怕英语单词(一)
有很多跟着我学习的学生经常跟我抱怨前端的单词很多,学了css又忘了html的单词,学了js又忘了css 的单词,所以本着给跟着我学习的学生提供一个学习前端不怕英语单词的课程,就打算写一篇博客去讲述如何增强在学习前端的时候巩固语法并且加强对英语单词的熟悉度 这一章节我们先讲下html,css和js的部分重点单词和联想记忆法
125 1
让学前端不再害怕英语单词(一)
|
前端开发 数据可视化 程序员
让学前端不再害怕英语单词(四)
前三章直通车↓↓↓ 让学前端不再害怕英语单词(一) 让学前端不再害怕英语单词(二) 让学前端不再害怕英语单词(三) 在第一章和第二章,我们大致讲了下前端三剑客和利用接口处理后端返回数据的一些单词,在第三章我们讲了css中的伪类和开发过程中要使用的一些单词,所以在第四章中,我们进一步系统的讲关于开发过程中使用的一些单词 如果有读者觉得哪部分的单词不熟悉的话,可以直接私信博主,博主会根据内容进行总结归纳
96 2
让学前端不再害怕英语单词(四)
|
前端开发 JavaScript
让学前端不再害怕英语单词(二)
写了本专栏的第一章让学前端不再害怕英语单词(一)后,反响热度还是比较高的,截止现在已经有20个收藏量了,所以趁热打铁来更第二章 第一章我们简单的介绍了html,css和js的部分高频单词,因为html要记的关键点不多(就几个标签),所以html的单词到这里就结束了,本章继续介绍css和js的高频单词,并且对es6的部分高频单词进行一个介绍
80 1
让学前端不再害怕英语单词(二)
|
前端开发 数据安全/隐私保护
让学前端不再害怕英语单词(三)
让学前端不再害怕英语单词(三)
98 2
让学前端不再害怕英语单词(三)