关于今天要讲的,小编想想还有点小激动。那就是关于变量的命名,这个一直都是容易引起程序员论战的话题。如何命名才更具可读性、易写性以及明义性?
程序命名常使用的是英文单词,当他们被作为变量名时,有全小写、全大写、首字母大写几种情况,程序语言中出现这些情况都是跟英语的表达习惯相同。
但是开发是往往为了使变量名表达出更多的含义通常会使用多个单词或符号。这时候英语中的表达习惯使用空格隔开单词就不适用了,空格隔开的用法会给编程带来一些麻烦,然后聪明的程序员创造了如下命名法:
蛇形命名法(snake case)
驼峰命名法(camel case)
匈牙利命名法(HN case)
帕斯卡命名法(Pascal case)
脊柱命名法(spinal case)
自由命名法(studly caps)
驼峰蛇形命名法
这些命名法都是为了克服单词间的空格,从而把不同单词串连起来,最终达到创造出一种新的“单词”的效果。
看看下面这种思维导图,就能很直观的了解了。
讲道理,小编刚学编程接触命名法时,看到这略带睿智的称呼,还乐了半天。言归正传,按照受众量与知名程度排名,现如今毫无疑问排前两位的是驼峰命名法和蛇形命名法。
驼峰和蛇形的优缺点这里我们切回主题,Python 为什么要推荐蛇形命名法?
我们先来比较下排名前两位的驼峰命名法和蛇形命名法的优缺点:
可读性:蛇形命名法用下划线拉大词距,更清楚易读;驼峰命名法的变量名紧凑,节省行宽;
易写性:驼峰命名法以大小写为区分,不引入额外的标识符;蛇形命名法统一小写,输入相对方便;
明义性:对于某些缩写成的专有名词,例如HTTP、RGB、DNS等等,一般习惯全用大写表示,但是如果严格遵循这两种命名法的话,须得只留首字母大写或者全小写,这样对原意都会造成一些“破坏”,有时候甚至让人感觉到别扭。如果保留全大写,IDE可能识别不准,反而会出现波浪提示;
由此可知,驼峰和蛇形各有自己的优缺点,不存在那一方压倒性的优势,这里需要注意的是Python也推荐使用驼峰式命名,但那是在类名、Type 变量、异常 exception 名这些情况。而在包名、模块名、方法名和普通变量名等情况,则是推荐用蛇形命名。
Python 为什么要推荐蛇形命名法?
真要说起这个原因那只能归咎于历史原因了,蛇形命名起源于1960年,但那时候它还没有特定的名称,后来Python从C语言中借鉴过来后,给它起名为“lower_case_with_underscores”,即带下划线的小写命名。
直到 21 世纪初的几年,在 Intel 和 Ruby 社区中,才有人开始以“snake_case”即蛇形命名来称呼它。现今有不少编程语言在某些场景下会推荐使用蛇形命名法,而 Python 则是其中最早这么做的之一,并且是使用场景最多的语言之一。
另一个比较重要的原因就是Python 对下划线“_”的独特偏爱。
项目代码中类似于 _xx、__xx、xx_、__xx__ 等等的写法随处可见,甚至还有孤零零一个下划线 _ 作为变量的特殊情况。这样看来,下划线作为单词间的连接,恰恰是这种传统习惯的一部分。
最后一个解释是:因为 Python 是蟒蛇啊,理所当然是用蛇形命名……
对于这三个解释,你们是如何感想的呢?对于蛇形命名法,大家是喜欢还是不喜欢呢?