10條PHP程式設計習慣助你找工作

2022-07-25 03:09:09 字數 3400 閱讀 4374

過去的幾周對我來說是一段相當複雜的經歷。我們公司進行了大裁員,我是其中之一,但卻體驗到了其中的樂 趣。我從來沒有被開除過,所以很難不去想得太多。我開始瀏覽招聘板塊,乙個全職php程式設計師的職位很吸引人,所以我寄去了簡歷並獲得了面試機會。在面試之 間,我和其主要的程式設計師們在諮詢**中聊了聊,最後他們給我出了一套測試題,其中有一道很耐人尋味。

找出以下**的錯誤之處:

$x = new array();

$x[sales] = 60;

$x[profit] = 20:

foreach($x as $key = $value)

}你能找到幾個呢?

如果你發現函式引數列表中少了逗號、「new array()」是不正確的、行末用了冒號而不是分號、foreach中沒有用「=>」及用「+」來連線字串,那恭喜你,你找到了所有的錯誤,你已經掌握了php程式設計的基礎。

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

」而是用了「

在找出了實際錯誤後,我又在上面找到的問題後面加了注釋。這足夠讓這份答卷從「正確」轉變為「發人深省」了,這也給我的申**了不少分,所以他們決定 聘用我。(但最後我拒絕了,因為我喜歡緊湊的生活節奏,並將自己的php 技能奉獻給我的客戶,而不是一家涉獵電信市場的公司。我需要乙個舞台來大展身手。)

那麼接下來就來看看我寫的10條php程式設計習慣吧:

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

當使用雙引號來括字串時,php直譯器會對其進行變數替換、轉義等操作,如「 」。如果你只想輸出乙個基本的字串,就用單引號吧,這樣會節省一些資源。當然,如果你需要進行變數替換的,那就必須用雙引號了,但其他情況下還是用單引號吧。

2、字串的輸出

你認為以下哪一條語句的執行速度最快?

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的引數可以用逗號連線,且速度會比字串連線要來得快。最後再用上第乙個習慣,那這條語句就非常好了。

3、在陣列索引中使用單引號

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

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

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

5、盡量不要使用正規表示式

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

6、不要在迴圈宣告中使用函式

這個問題不單單出現在php中,你可以在其他語言的**中經常看到:

差:for($i=0;$i

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

這因該很好解釋,但許多人就是想少寫一行**而浪費了系統資源。如果在迴圈宣告中使用了count函式,那每次迴圈都會呼叫一次。如果你的迴圈次數很多,那就會浪費非常多的時間。

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

這是兩個很古老的功能,在當時(十年前)也許是乙個好方法,但現在看來並非如此。老版本的php在安裝時會預設開啟這兩個功能,這會引起安全漏洞、編 程錯誤及其他的問題,如只有使用者輸入了資料時才會建立變數等。如今這兩個功能都被捨棄了,所以每個程式設計師都應該避免使用。如果你過去的程式有使用這兩項功 能,那就盡快將其剔除吧。

8、一定要對變數進行初始化(這裡的「初始化」指的是「宣告」——譯者注)

當需要沒有初始化的變數,php直譯器會自動建立乙個變數,但依靠這個特性來程式設計並不是乙個好主意。這會造成程式的粗糙,或者使**變得另人迷惑,因 為你需要探尋這個變數是從**開始被建立的。另外,對乙個沒有初始化的變數進行遞增操作要比初始化過的來得慢。所以對變數進行初始化會是個不錯的主意。

9、對**進行注釋

這個問題已經提過很多次了,但再多次也不夠。我知道有些地方是不聘用不對**進行注釋的程式設計師的。我在前一次工作面試後和副總、面試官一起瀏覽我寫的**,當他們對我所做的**注釋印象深刻,還了解了一下我的這一習慣。一天之後,我得到了這個工作。

我知道有些自稱為php大師的人聲稱自己的**寫得很好,不需要新增什麼注釋。在我看來,這些人都是垃圾。學一寫注釋的規範和技巧,熟悉一下phpdocumentor或doxygen之類的注釋輔助軟體,都是值得的。

10、遵循乙個程式設計規範

關於這一點,是你需要在面試中詢問你潛在的老闆的,問問他們正在使用什麼程式設計規範。pear?zend?內部規範?要提及你正在使用的程式設計規範,不管 是你自己建立的,還是目前普遍流行的一種。對於php這種鬆鬆垮垮的語言來說,如果沒有乙個好的程式設計規範,那麼那些**就會看起來想一堆垃圾。發臭的,令 人作嘔的垃圾。一些基本的規範包括空格規範、打括號匹配、命名風格等。這對任何乙個追求高質量的**的人來說都是必須的。

有人說:「我討厭你的4個空格的縮排。」我要說,什麼?用4個空格來縮排?這比用製表符過占用3個字元的空間。更重要的是,只要是使用比記事本高階的 編輯器,你可以自定義製表符的縮排值。所以每個程式設計師都可以以其最習慣的方式來看**。可以時設定為4,也可以設定為0(如果你是個受虐狂)。反正我不在 乎,但你就是不能用空格來縮排!

總的來說,我希望以上這些程式設計習慣可以對你有所幫助。如果你想在面試中留下好印象,只需要一些小細節就可以了。

10條PHP程式設計習慣助你找工作

過去的幾周對我來說是一段相當複雜的經歷。我們公司進行了大裁員,我是其中之一,但卻體 驗到了其中的樂 趣。我從來沒有被開除過,所以很難不去想得太多。我開始瀏覽招聘板塊,乙個全職php程式設計師的職位很吸引人,所以我寄去了簡歷並獲得了面試機會。在面試之 間,我和其主要的程式設計師們在諮詢 中聊了聊,最後...

10條PHP程式設計習慣助你找工作

過去的幾周對我來說是一段相當複雜的經歷。我們公司進行了大裁員,我是其中之一,但卻體驗到了其中的樂 趣。我從來沒有被開除過,所以很難不去想得太多。我開始瀏覽招聘板塊,乙個全職php程式設計師的職位很吸引人,所以我寄去了簡歷並獲得了面試機會。在面試之 間,我和其主要的程式設計師們在諮詢 中聊了聊,最後他...

10個習慣助你成為優秀程式設計師

在這個世界上,有數百萬的人熱衷於軟體開發,他們有很多名字,如 軟體工程師程式設計師 編碼人 開發人員。但如何成為乙個優秀的程式設計師呢?慧谷實訓中心的專業老師來告訴大家應該養成的10個好習慣 一 學無止境。就算是你有了10 年以上的程式設計師經歷,你也得要使勁地學習,因為你在計算機這個充滿一創造力的...