關于今天要講的,小編想想還有點小激動。那就是關于變量的命名,這個一直都是容易引起程序員論戰的話題。如何命名才更具可讀性、易寫性以及明義性?
程序命名常使用的是英文單詞,當他們被作為變量名時,有全小寫、全大寫、首字母大寫幾種情況,程序語言中出現這些情況都是跟英語的表達習慣相同。
但是開發是往往為了使變量名表達出更多的含義通常會使用多個單詞或符号。這時候英語中的表達習慣使用空格隔開單詞就不适用了,空格隔開的用法會給編程帶來一些麻煩,然後聰明的程序員創造了如下命名法:
-
蛇形命名法(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 是蟒蛇啊,理所當然是用蛇形命名……
對于這三個解釋,你們是如何感想的呢?對于蛇形命名法,大家是喜歡還是不喜歡呢?
,