有一位创业者朋友,他是公司负责人,带领着一个十几人的小团队,目前正在开发一款 SaaS 产品。 这位朋友自己也是码农,而且在大厂工作了好几年,所以非常重视代码质量,不允许项目有瑕疵。我看过他自己写的代码,确实工整漂亮,架构合理,逻辑清晰,命名规范,注释详细,简直就是理工男中的战斗机。 前段时间他招聘了一个小伙,因为刚入职还没有磨合好,所以他亲自给小伙 review 代码,帮助小伙矫正那些不良的编程习惯。 也不知道是小伙产生了抗拒心理,还是本性就大大咧咧,他总是对命名规范不太关注,经常在代码中使用不同的命名风格,而且还做不到见名知意。他认为名字只是一个细节,既不影响程序性能,也不影响程序逻辑,没有必要花费太多精力。 三番五次劝说无效,我的朋友感觉非常疲惫和吐血。大概两个月以后,我的朋友终于受不了了,再也不想给他擦屁股了,趁着他还未转正,开除员工的成本最低,干脆就一不做二不休,让他正式毕业了。 好吧,朋友的做法确实简单粗暴,快刀斩乱麻,我本来以为我是一个雷厉风行的人,但是在他面前我也只能是一个弟弟。 我不公开评价开除员工的做法对不对,免得被人吐槽屁股坐歪,这篇文章,我只想简单讨论一下代码命名的重要性。 首先,我们必须承认的是,良好的命名是优秀代码的标志之一,它让代码更容易阅读和理解,方便以后的迭代和升级。 不信你可以看看自己一个月之前写的代码,就连那些简单的函数和变量,你都不容易梳理清楚它们的具体含义。如果你再使用一个混乱的名字,我保证你会抓狂。 在实际开发中,我自己也会反复推敲变量的名字,删除了又重写,重写了又删除,来回折腾好几遍才满意。
嗯,作为一个程序员,多少都要有一些强迫症。
我们不妨看一个例子:
let x, y, z;
function f() {
//TODO:
}
这段代码是不是很难理解?x、y 和 z 分别代表什么?f() 有什么作用? 你再看下面这个例子:
let firstName, lastName;
function printFullName(firstName, secondName) {
//TODO:
}
很显然这段代码更容易阅读,瞟一眼就知道变量和函数的作用了。 另外,我们编写的代码也很容易出现错误,当名字具有描述性信息时,发现错误的成本就会降低(比如将错误的变量传递给了函数),否则你就得凭借记忆来猜测变量的含义。 你很容易记住一个变量的含义,但是你记不住 20 个变量的含义,当变量名字增多以后,你就会越来越混乱,搞不清楚它们是干嘛的。
不要相信记忆,它是不靠谱的,只有白纸黑字写下来的东西才不会出错。
最后,你还应该遵守某种命名规范,按照统一的风格来起名字。所谓命名规范,就是指使用大小写和分隔符来增强代码的可读性。 常见的命名规范有:
不同命名规范的具体细节就不在这里展开讨论了,有兴趣的读者请自行百度。
不同的个人、公司、团队、项目可能会采用不同的命名规范,它们之间没有明确的好坏之分,只是一种约定成俗的习惯而已。 总起来说,代码命名应该遵守以下规则:
当你的名字不符合以上规则时,那么它很有可能就是一个糟糕的名字。