【PHP】05. 變數命名與編寫風格
【PHP】05. 變數命名與編寫風格
此文章也有影片介紹,可以搭配影片一起學習!
01. 變數命名與編寫風格 (所屬課程)
寫程式基本上就是在寫英文,而且該英文必須要符合程式規範。不過電腦與程式語言跟人類在意的事情不太一樣。所以寫程式雖然是在寫英文,但是該英文其實不用符合文法,甚至連該英文單字都可以存在,拼錯電腦都可能可以執行(只要你「程式宣告」與「程式使用」都同拼一樣的錯就可以)。
但是如果你真的亂寫亂拼,雖然電腦懂你,不過同事不會懂的。寫成讓同事看不懂會造成職場關係惡化,還是不要增加自己喝西北風的可能性會比較好(如果你上司也不懂你的話)。
所以我們還是有一些規範,可以稱作編寫風格或建議。這邊介紹最基本的建議,也就是命名法。
以下開始介紹:
駝峰式大小寫(Camel-Case)
當提到變數命名風格時,一定會提到駝峰式大小寫(Camel-Case),什麼是駝峰式大小寫呢?
駝峰式大小寫是指變數的名稱由兩個或多個單字連結在一起,此命名法可增加變數名稱的可讀性,例如下方的$progressBarTitle變數就是以progress bar title三個單字連結在一起的方式來命名。請注意變數字元間不能分開,否則無法執行。
駝峰式大小寫有兩種格式:
小駝峰式命名法(lower camel case)
第一個單字是小寫開頭,第二個單字以大寫開頭。例如:progressBarTitle。
大駝峰式命名法(upper camel case)
每一個字母的字首都是大寫開頭。例如:ProgressBarTitle。也被稱作Pascal命名法。
有興趣者可以參考維基百科 – 駝峰式大小寫
目前以「小駝峰式命名法」最常使用,但是後面會慢慢看到在不同的目標上面我們會用不同的命名法。總之真的不清楚,就用「小駝峰式命名法」吧!
蛇型命名法Snake case
蛇型命名法(Snake case)在各單字中間以底線區隔。例如:progress_bar_title
以前比較不提倡使用蛇型命名法,因為有時候底線會被用來做其他指示,例如HTML的裡面的<a>他預設就是有底線的,所以人眼上面可能會被影響到。但是現在的編輯器都很智慧與聰明,加上如果沒有學過「駝峰式大小寫」的話,沒訓練過的人比較容易看懂「蛇型命名法」。所以近幾年來「蛇型命名法」也是滿容易看到的。
有興趣者可以參考維基百科 – Snake case
因為校正小編本身常常同時寫滿多程式語言的,每個程式語言都有不同的”建議“規範,所以也是很容易參雜。這時候如果需要校正的話,會以編輯器取代的功能一次調整。
有時候這很難去真正的遵守,比方說Ruby常用的是snake case,當你用Ruby on rails API輸出JSON 資料的話,他很自然會是snake case。但是JavaScript常用的是lower camel case,所以勢必會有一段違反規範(因為兩邊對接,要馬JavaScript出現snake case要馬Ruby出現lower camel case)。
不過我們這邊是講PHP,PHP則是官方API裡面兩種都有用,不是那麼的嚴謹。所以建議是不要太在意這個。但如果公司或是上司有要求,就請遵守公司規範吧!當然也可以遵照PHP Standards Recommendations (我自己是沒什麼看拉)。
PHP直譯式語言與變數命名的關係
在上計算機概論的時候,通常一定會提到編譯 (Compile) 和直譯 (Interprete),簡單來說,編譯式語言是指程式碼在執行之前,需要透過編譯器編譯,讓你的程式碼變得機器看的懂的語言。編譯有一個好處就是可以透過編譯器把程式裡面寫的比較不好的部分換成我們常見的寫法,因此一般而言,編譯過後的程式碼會比較小,效能也會比較好,執行速度也會比較快。
而直譯式語言是在執行時同時一行一行解析成電腦看的懂的機械語言。而PHP是直譯式語言,因為沒有經過編譯(compile),因此最好再執行前先優化你的程式碼,避免在執行時花太久的時間解析,導致網頁速度變慢。如果你的變數命名的比較長的話,它就會掃得比較久,因此,變數命名的時候請盡量不要命名太長。而Facebook這種超大型網站雖然是用PHP撰寫,為了解決網頁效能問題,特別開發編譯工具來解決這個問題,如果想要進階學習的同學自行可參考下列內容。
HipHop_for_PHP
https://zh.wikipedia.org/wiki/HipHop_for_PHP
GITHUB
https://github.com/facebook/hhvm
最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!