国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

PHP代碼的優(yōu)與劣

瀏覽:4日期:2024-02-22 10:21:49

優(yōu)良的PHP代碼應該是結構化的;優(yōu)良的PHP代碼應該是規(guī)范化的;優(yōu)良的PHP代碼應該是自適應的;優(yōu)良的PHP代碼應該是安全的……

我在SitePoint做面試官的時候一定會問的問題是:你認為PHP代碼的優(yōu)劣體現(xiàn)在哪里?因為這個問題可以讓我大體知道應聘者是哪種類型的程序員,而不是單純地考察他對PHP函數(shù)的掌握程度(這一點Zend的PHP認證做得不錯,雅虎的PHP程序員面試題也屬于此類)。

重要的是,這個問題可以讓我知道應聘者是否經(jīng)歷過這樣的事情——從一個懶散程序員手中接過一段凌亂的代碼進行重用,或者要幫助團隊中的其他成員來處理這類事情。

誠然,對于這個問題我自己并沒有一個滿意的答案,不過我知道哪些答案是我想聽到的:

優(yōu)良的PHP代碼應該是結構化的。大段的代碼應該被分割整理成一個個函數(shù)或方法,而那些不氣眼的小段代碼則應該加上注釋,以便日后清楚它們的用途。而且應該盡可能地把前臺代碼如HTML、CSS、Javascript等從程序中分離出來。PHP的面向?qū)ο缶幊烫匦钥梢院芎玫貛椭绦騿T將代碼整理有序。

優(yōu)良的PHP代碼應該是規(guī)范化的。無論是為變量名和函數(shù)名設定命名規(guī)則,還是對一些會重復使用的過程如數(shù)據(jù)庫操作和錯誤處理進行標準化,抑或是簡單到規(guī)定好代碼是怎樣縮進的,這些規(guī)范化都可以讓代碼的可讀性大大提高。

優(yōu)良的PHP代碼應該是自適應的。PHP有許多特性如magic quotes和short tags,這些特性的打開和關閉會影響到程序的運行。所以,一個好的程序員應該在他的代碼中加如適當?shù)恼Z句來使程序能夠根據(jù)環(huán)境進行調(diào)整。

優(yōu)良的PHP代碼應該是安全的。雖然PHP是一種高效、靈活的語言,沒有固定的框架,但卻把安全問題留給了程序員們。對潛在安全漏洞的深刻理解,如跨站腳本攻擊(XSS)、跨站請求偽造(CSRF)、代碼注入漏洞、字符編碼循環(huán)漏洞等,對于今天的專業(yè)程序員來說是至關重要的。

當應聘者在回答這些問題的時候,我就能清楚地知道是否該錄用他。當然,有時程序員并不能很好地闡明這個問題,這時我們會讓他們做一些PHP測試。測試中的許多問題表面上看起來非常簡單,但這也給了應聘者們一個展現(xiàn)自我的機會,因為只要觀察得仔細,就能找出問題。

下面這一小段“劣質(zhì)”的PHP代碼是一道簡化了的測試題。這種問題就像在問:你該怎樣優(yōu)化這段代碼?

<?echo('<p>Search results for query: ' . $_GET['query'] . '.</p>');?>

這段代碼的主要問題在于它把用戶提交的數(shù)據(jù)直接顯示到了網(wǎng)頁上,從而產(chǎn)生XSS漏洞。其實有很多方法可以填補這個漏洞。那么,什么代碼是我們想要的呢?

<?echo('<p>Search results for query: ' . htmlspecialchars($_GET['query']) . '.</p>');?>

這是最低要求。XSS漏洞用htmlspecialchars函數(shù)填補了,從而屏蔽了非法字符。

<?php; if (isset($_GET['query'])); {; echo '<p>Search results for query: ',; htmlspecialchars($_GET['query'], ENT_QUOTES), '.</p>'}; ?>

能寫出這樣代碼的人應該是我想要錄用的人了。

<?被替換成了<?php,這樣更符合XML規(guī)范。在輸出$_GET['query']的值之前先判斷它是否為空。echo命令中多余的括號被去掉了。字符串用單引號限定,從而節(jié)省了PHP從字符串中搜索可替換的變量的時間。用逗號代替句號,節(jié)省了echo的時間。將ENT_QUOTES標識傳遞給htmlspecialchars函數(shù),從而保證單引號也會被轉(zhuǎn)義。雖然這并是最主要的,但也算是一個良好習慣??上У氖?,能給出這樣讓人滿意答復的程序員少之又少。我們花了3個月的時間才招聘到讓我們滿意的程序員。

那么,你會怎樣回答文章開頭提出的問題呢?你認為PHP代碼的優(yōu)劣體現(xiàn)在哪里?你認為一個PHP程序員還應具有哪些品質(zhì)?

本文出自:http://www.yeeyan.com/articles/view/38585/18736原文鏈接:http://www.sitepoint.com/blogs/2007/05/25/good-and-bad-php-code/

標簽: PHP
主站蜘蛛池模板: 东方市| 田阳县| 阿荣旗| 岳池县| 阳山县| 上犹县| 碌曲县| 忻城县| 民乐县| 江华| 普兰县| 邵武市| 彭州市| 彰化市| 浦江县| 濉溪县| 沙坪坝区| 五常市| 共和县| 林周县| 岢岚县| 嘉定区| 阳谷县| 文登市| 淮南市| 大方县| 灌云县| 抚远县| 喀什市| 凭祥市| 博乐市| 肃南| 宜宾市| 商洛市| 岐山县| 滨州市| 梅河口市| 泾川县| 永胜县| 高清| 共和县|