10條PHP編程習慣

過去的幾周對我來講是一段至關複雜的經歷。咱們公司進行了大裁人,我是其中之一,但卻體驗到了其中的樂 趣。我歷來沒有被開除過,因此很難不去想得太多。我開始瀏覽招聘板塊,一個全職PHP程序員的職位很吸引人,因此我寄去了簡歷並得到了面試機會。在面試之 間,我和其主要的程序員們在諮詢電話中聊了聊,最後他們給我出了一套測試題,其中有一道很回味無窮。php

  找出如下代碼的錯誤之處:程序員

  $x = new Array();面試

  $x[sales] = 60;正則表達式

  $x[profit] = 20:編程

  foreach($x as $key = $value) {數組

  echo $key+" "+$value+"安全

  ";編輯器

  }函數

  }post

  你能找到幾個呢?

  若是你發現函數參數列表中少了逗號、「new Array()」是不正確的、行末用了冒號而不是分號、foreach中沒有用「=>」及用「+」來鏈接字符串,那恭喜你,你找到了全部的錯誤,你已經掌握了PHP編程的基礎。

  如今我來講說我是怎麼回答這道題的。我固然也找出了以上這些問題,但我更進一步。好比,你有沒有發如今數組索引裏沒有用引號將字符串括起來?雖然這不 會形成嚴重錯誤,但這是一個編碼錯誤。另外,你注意到在echo一行它使用了雙引號而不是單引號嗎?使用了PHP開始標誌的縮寫形式?而且沒有用 「

  」而是用了「

  」?

  在找出了實際錯誤後,我又在上面找到的問題後面加了註釋。這足夠讓這份答卷從「正確」轉變爲「發人深省」了,這也給個人申請加了很多分,因此他們決定 聘用我。(但最後我拒絕了,由於我喜歡緊湊的生活節奏,並將本身的PHP 技能奉獻給個人客戶,而不是一家涉獵電信市場的公司。我須要一個舞臺來大展身手。)

  那麼接下來就來看看我寫的10條PHP編程習慣吧:

  一、使用單引號括起來的字符串

  當使用雙引號來括字符串時,PHP解釋器會對其進行變量替換、轉義等操做,如「 」。若是你只想輸出一個基本的字符串,就用單引號吧,這樣會節省一些資源。固然,若是你須要進行變量替換的,那就必須用雙引號了,但其餘狀況下仍是用單引號吧。

  二、字符串的輸出

  你認爲如下哪一條語句的運行速度最快?

  print "Hi my name is $a. I am $b";

  echo "Hi my name is $a. I am $b";

  echo "Hi my name is ".$a.". I am ".$b;

  echo "Hi my name is ",$a,". I am ",$b;

  echo 'Hi my name is ',$a,'. I am ',$b;

  也許這看起來很奇怪,但事實上最後一條的運行速度是最快的。print比echo要慢,在字符串中進行變量替換時會慢,而鏈接字符串要比用逗號鏈接來 得慢,最後一句則是第一個習慣的體現。因此,不在字符串中進行變量替換不只會加快程序運行速度,也會讓你的代碼在任何語法高亮顯示的編輯器中顯得更爲易懂 (變量會被高亮顯示出來)。不多人知道echo的參數能夠用逗號鏈接,且速度會比字符串鏈接要來得快。最後再用上第一個習慣,那這條語句就很是好了。

  三、在數組索引中使用單引號

  正如你在上面的測試題中所看到的,我指出了$x[sales]從嚴格意義上來講是錯誤的,索引應該被括起來,即$x['sales']。這是由於 PHP 會將沒有括起來的索引辨認爲「裸」字符串,並把它解釋爲一個常量。當找不到該常量的定義時,纔將其解釋爲一個字符串,因此這條語句纔是可運行的。把索引括 起來能夠省去這部分工做,若是未來正好要用這一字符串定義常量時也就不會有錯誤了。我甚至據說這樣作要快七倍左右的時間,雖然我沒有親自測試過。更多關於 這一話題的討論,請看PHP手冊「數組」一章中的的「數組的能與不能」一節。

  四、不要使用開始標誌的縮寫形式

  你正在使用這樣的符號嗎?「

  五、儘可能不要使用正則表達式

  在進行常規的字符串操做時,儘量不要去使用正則表達式(preg和ereg系列函數)。str_replace函數要比preg_replace快得多,甚至strtr函數也要比str_replace來得快。省去這些沒必要要的麻煩吧,你的老闆會感謝你的。

  六、不要在循環聲明中使用函數

  這個問題不僅僅出如今PHP中,你能夠在其餘語言的代碼中常常看到:

  差:for($i=0;$i

  好:$count=count($array);for($i=0;$i<$count;$i++){...}

  這因該很好解釋,但許多人就是想少寫一行代碼而浪費了系統資源。若是在循環聲明中使用了count函數,那每次循環都會調用一次。若是你的循環次數不少,那就會浪費很是多的時間。

  七、永遠不要使用register_globals和magic quotes

  這是兩個很古老的功能,在當時(十年前)也許是一個好方法,但如今看來並不是如此。老版本的PHP在安裝時會默認打開這兩個功能,這會引發安全漏洞、編 程錯誤及其餘的問題,如只有用戶輸入了數據時纔會建立變量等。現在這兩個功能都被捨棄了,因此每一個程序員都應該避免使用。若是你過去的程序有使用這兩項功 能,那就儘快將其剔除吧。

  八、必定要對變量進行初始化(這裏的「初始化」指的是「聲明」——譯者注)

  當須要沒有初始化的變量,PHP解釋器會自動建立一個變量,但依靠這個特性來編程並非一個好主意。這會形成程序的粗糙,或者使代碼變得另人迷惑,因 爲你須要探尋這個變量是從哪裏開始被建立的。另外,對一個沒有初始化的變量進行遞增操做要比初始化過的來得慢。因此對變量進行初始化會是個不錯的主意。

  九、對代碼進行註釋

  這個問題已經提過不少次了,但再屢次也不夠。我知道有些地方是不聘用不對代碼進行註釋的程序員的。我在前一次工做面試後和副總、面試官一塊兒瀏覽我寫的代碼,當他們對我所作的代碼註釋印象深入,還了解了一下個人這一習慣。一天以後,我獲得了這個工做。

  我知道有些自稱爲PHP大師的人聲稱本身的代碼寫得很好,不須要添加什麼註釋。在我看來,這些人都是垃圾。學一寫註釋的規範和技巧,熟悉一下phpDocumentor或Doxygen之類的註釋輔助軟件,都是值得的。

  十、遵循一個編程規範

  關於這一點,是你須要在面試中詢問你潛在的老闆的,問問他們正在使用什麼編程規範。PEAR?Zend?內部規範?要說起你正在使用的編程規範,無論 是你本身建立的,仍是目前廣泛流行的一種。對於PHP這種鬆鬆垮垮的語言來講,若是沒有一個好的編程規範,那麼那些代碼就會看起來想一堆垃圾。發臭的,令 人做嘔的垃圾。一些基本的規範包括空格規範、打括號匹配、命名風格等。這對任何一個追求高質量的代碼的人來講都是必須的。

  有人說:「我討厭你的4個空格的縮進。」我要說,什麼?用4個空格來縮進?這比用製表符過佔用3個字符的空間。更重要的是,只要是使用比記事本高級的 編輯器,你能夠自定義製表符的縮進值。因此每一個程序員均可以以其最習慣的方式來看代碼。能夠時設置爲4,也能夠設置爲0(若是你是個受虐狂)。反正我不在 乎,但你就是不能用空格來縮進!

  總的來講,我但願以上這些編程習慣能夠對你有所幫助。若是你想在面試中留下好印象,只須要一些小細節就能夠了。

 

摘自:http://www.shouce.ren/post/view/id/108689

相關文章
相關標籤/搜索