如何为变量起名
在计算机科学领域,有一句著名的格言(俏皮话):
There are only two hard things in Computer Science: cache invalidation and naming things. 在计算机科学领域只有两件难事:缓存过期 和 给东西起名字
— Phil Karlton
第一个『缓存过期问题』的难度不用多说,任何用过缓存的人都会懂。至于第二个『给东西起名字』这事的难度,我也是深有体会。在我的职业生涯里,度过的作为黑暗的下午之一,就是坐在显示器前抓耳挠腮为一个新项目起一个合适的名字。
编程时起的最多的名字,还数各种变量。给变量起一个好名字很重要,因为好的变量命名可以极大的提高代码整体可读性。
下面几点,是我总结的为变量起名时,最好遵守的基本原则。
1. 变量名要有描述性,不能太宽泛
在可接受的长度范围内,变量名能把它所指向的内容描述的越精确越好。所以,尽量不要用那些过于宽泛的词来作为你的变量名:
· GOOD: day_of_week, hosts_to_reboot, expired_cards
· BAD: day, host, cards, temp
2. 变量名最好让人能猜出类型
老司机们都知道,Python 是一门动态类型语言,它(至少在 PEP 484 出现前)没有变量类型声明。所以当你看到一个变量时,除了通过上下文猜测,没法轻易知道它是什么类型。
不过,人们对于变量名和变量类型的关系,通常会有一些直觉上的约定,我把它们总结在了下面。
『什么样的名字会被当成 bool 类型?』
布尔类型变量的最大特点是:它只存在两个可能的值**『是』** 或 『不是』。所以,用 is、has等非黑即白的词修饰的变量名,会是个不错的选择。原则就是:让读到变量名的人觉得这个变量只会有『是』或『不是』两种值。
下面是几个不错的示例:
· is_superuser:『是否超级用户』,只会有两种值:是/不是
· has_error:『有没有错误』,只会有两种值:有/没有
· allow_vip:『是否允许 VIP』,只会有两种值:允许/不允许
· use_msgpack:『是否使用 msgpack』,只会有两种值:使用/不使用
· debug:『是否开启调试模式』,被当做 bool 主要是因为约定俗成