如何取一个好的变量名

当我写一个需要长期维护的项目时,取变量名变成一个非常重要的事。尤其是同事拿着代码看不懂其中的含义,需要再解释一遍的时候。 如何取一个优雅的变量名,应该是很多小伙伴都头疼的问题。 变量又不是狗,我们不能觉得这个名字可爱,那个名字酷,叫起来方便就直接按上,之所以绞尽脑汁想一个变量名,无非是为了让小伙伴们阅读起来更加方便。 一个好的变量名应该是可读的,而不是需要让别人在阅读自己代码的时候需要通过上下文来判断这个变量代表什么含义。 一个好的变量名应该也是容易记住的,这样别人在阅读代码的时候可以大概知道这个变量在前面用过。

选择好的变量名

准确的表述变量代表的事物

这个要求并不简单,尤其是对于母语不是英文的人来说,比如我。 这也是我在取变量名的时候遇见的最大的问题。

一些比较好的例子如下:

customerID/pageCount/

比较反人类的命名是直接用 a/b/c 这些没有含义的字符来作为名字。

合适的长度

一个优雅的变量名不应该太长,比如我要取一个变量名来代表 豆瓣核心系统的软件工程师 这个事物,

softwareEngineerAtDouban

理想情况下变量名长度应该在 10 到 16个字符之间,放宽要求可以控制在 8 到 20 个字符之间。 变量名太短可能会导致无法传达足够的信息 变量名太长写起来麻烦,而且会让代码的视觉结构不那么清晰。

变量名中的计算值限定词

Total Sum Average Max String Record 这种限定词放在变量名的最后。

优点:

变量名最重要的含义部分,应该放在最前面。 统一规则之后,可以避免 totalRevenue 合 revenueTotal 这种有歧义的变量名。

一致性可以提高可读性,简化维护工作。

变量名中的对仗词

begin/end
first/last
locked/unlocked
min/max
next/previous
old/new
opened/closed
visible/invisible
source/target
source/destination
up/down

特定类型的命名

命名循环下标

如 i j k 这些可以放在简单的循环里面,但是还是建议取有意义的名字。

命名状态变量

如果你在猜测某段代码的含义,就应该考虑重新命名。

命名临时变量

临时变量用户存储计算的中间结果,作为临时占位符,以及存储内存管理值(housekeeping)

不要因为变量是临时的就随意的命名。

命名布尔值

类似于 done error found success 这些是好的布尔值变量。但是 status 就不是一个好的名字。

使用肯定的布尔值变量名,notFound notdone notSuccessful 这些不是好的变量名