40個(gè)跡象表明你還是PHP菜鳥(niǎo)
更新時(shí)間:2008年09月29日 20:18:26 作者:
英文版權(quán)歸Reinhold Weber所有,中譯文作者yangyang(aka davidkoree)。雙語(yǔ)版可用于非商業(yè)傳播,但須注明英文版作者、版權(quán)信息,以及中譯文作者。翻譯水平有限,請(qǐng)廣大PHPer指正。
我愿意把本文歸入我的“編程糗事”系列。盡管在正規(guī)大學(xué)課程中,接觸到軟件工程、企業(yè)級(jí)軟件架構(gòu)和數(shù)據(jù)庫(kù)設(shè)計(jì),但我還是時(shí)不時(shí)地體會(huì)到下述事實(shí)帶給我的“罪惡”感,當(dāng)然,都是我的主觀感受,并且面向Eclipse:
你是PHP菜鳥(niǎo),如果你:
1. 不會(huì)利用如phpDoc這樣的工具來(lái)恰當(dāng)?shù)刈⑨屇愕拇a
2. 對(duì)優(yōu)秀的集成開(kāi)發(fā)環(huán)境如Zend Studio或Eclipse PDT視而不見(jiàn)
3. 從未用過(guò)任何形式的版本控制系統(tǒng),如Subclipse
4. 不采用某種編碼與命名標(biāo)準(zhǔn),以及通用約定,不能在項(xiàng)目開(kāi)發(fā)周期里貫徹落實(shí)
5. 不使用統(tǒng)一開(kāi)發(fā)方式
6. 不轉(zhuǎn)換(或)也不驗(yàn)證某些輸入或SQL查詢串(譯注:參考PHP相關(guān)函數(shù))
7. 不在編碼之前徹底規(guī)劃你的程序
8. 不使用測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
9. 不在錯(cuò)誤開(kāi)啟狀態(tài)下進(jìn)行編碼和測(cè)試(譯注:參考PHP函數(shù)error_reporting)
10. 對(duì)調(diào)試器的好處視而不見(jiàn)
11. 不重構(gòu)你的代碼
12. 不使用類似MVC模式把程序的不同層次劃分開(kāi)
13. 不知道這些概念:KISS, DRY, MVC, OOP, REST
14. 不用return而是直接在你的函數(shù)或類中輸出(echo/print)內(nèi)容
15. 對(duì)單元測(cè)試或通用測(cè)試的優(yōu)點(diǎn)視而不見(jiàn)
16. 總是返回硬編碼的HTML,卻不返回純粹的數(shù)據(jù),字符串,或?qū)ο?
17. 總是對(duì)“消息”和“配置參數(shù)”進(jìn)行硬編碼
18. 不對(duì)SQL查詢語(yǔ)句做優(yōu)化
19. 不使用__autoload(譯注:參考PHP手冊(cè)相關(guān)描述)
20. 不允許智能錯(cuò)誤處理(譯注:參考PEAR的ErrorStack)
21. 使用$_GET替代$_POST來(lái)做具有破壞性的傳遞操作
22. 不知道怎么利用正則表達(dá)式
23. 從未聽(tīng)說(shuō)過(guò)SQL注入或跨站腳本
24. 不允許簡(jiǎn)易配置,也不允許類的構(gòu)造函數(shù)接受參數(shù)傳遞而后執(zhí)行set/get方法,或運(yùn)行時(shí)的常量定義
25. 不理解面向?qū)ο缶幊蹋∣OP)的優(yōu)勢(shì)和劣勢(shì)
26. 不視情形大小而濫用OOP
27. 自認(rèn)為實(shí)現(xiàn)可復(fù)用的軟件一定等于/需要讓你的代碼遵循OOP
28. 不利用智能缺省值
29. 沒(méi)有單一的配置文件
30. 不想暴露文件源碼,卻用.inc后綴名取代了.php
31. 不使用數(shù)據(jù)庫(kù)抽象層
32. 不能保持DRY作風(fēng),即不重復(fù)自己,如果你總是在復(fù)制粘貼一些東西,說(shuō)明你設(shè)計(jì)得很差勁
33. 沒(méi)有實(shí)現(xiàn)讓一個(gè)函數(shù)/類/方法只做一件事,也不能組合利用它們
34. 沒(méi)能嘗試OOP的特長(zhǎng),如抽象類、接口、多態(tài)、繼承,訪問(wèn)控制修飾符(譯注:如public, private, protected)
35. 不用現(xiàn)有的設(shè)計(jì)模式優(yōu)化你的程序體系設(shè)計(jì)
36. 不允許你的用戶在你擁有很多文件或目錄的情況下定義基礎(chǔ)目錄
37. 污染了名稱空間,比如用常見(jiàn)字符串命名你的庫(kù)函數(shù)
38. 使用數(shù)據(jù)庫(kù)表時(shí)不使用表前綴
39. 不使用統(tǒng)一的模板引擎
40. 不關(guān)注已有的PHP開(kāi)發(fā)框架,懶于探索;其實(shí)先進(jìn)的開(kāi)發(fā)理念和美妙代碼就蘊(yùn)含其中。
譯注:另有馬永占翻譯版本《PHP程序員的40點(diǎn)陋習(xí)》,簡(jiǎn)潔并配有譯者注釋。
你是PHP菜鳥(niǎo),如果你:
1. 不會(huì)利用如phpDoc這樣的工具來(lái)恰當(dāng)?shù)刈⑨屇愕拇a
2. 對(duì)優(yōu)秀的集成開(kāi)發(fā)環(huán)境如Zend Studio或Eclipse PDT視而不見(jiàn)
3. 從未用過(guò)任何形式的版本控制系統(tǒng),如Subclipse
4. 不采用某種編碼與命名標(biāo)準(zhǔn),以及通用約定,不能在項(xiàng)目開(kāi)發(fā)周期里貫徹落實(shí)
5. 不使用統(tǒng)一開(kāi)發(fā)方式
6. 不轉(zhuǎn)換(或)也不驗(yàn)證某些輸入或SQL查詢串(譯注:參考PHP相關(guān)函數(shù))
7. 不在編碼之前徹底規(guī)劃你的程序
8. 不使用測(cè)試驅(qū)動(dòng)開(kāi)發(fā)
9. 不在錯(cuò)誤開(kāi)啟狀態(tài)下進(jìn)行編碼和測(cè)試(譯注:參考PHP函數(shù)error_reporting)
10. 對(duì)調(diào)試器的好處視而不見(jiàn)
11. 不重構(gòu)你的代碼
12. 不使用類似MVC模式把程序的不同層次劃分開(kāi)
13. 不知道這些概念:KISS, DRY, MVC, OOP, REST
14. 不用return而是直接在你的函數(shù)或類中輸出(echo/print)內(nèi)容
15. 對(duì)單元測(cè)試或通用測(cè)試的優(yōu)點(diǎn)視而不見(jiàn)
16. 總是返回硬編碼的HTML,卻不返回純粹的數(shù)據(jù),字符串,或?qū)ο?
17. 總是對(duì)“消息”和“配置參數(shù)”進(jìn)行硬編碼
18. 不對(duì)SQL查詢語(yǔ)句做優(yōu)化
19. 不使用__autoload(譯注:參考PHP手冊(cè)相關(guān)描述)
20. 不允許智能錯(cuò)誤處理(譯注:參考PEAR的ErrorStack)
21. 使用$_GET替代$_POST來(lái)做具有破壞性的傳遞操作
22. 不知道怎么利用正則表達(dá)式
23. 從未聽(tīng)說(shuō)過(guò)SQL注入或跨站腳本
24. 不允許簡(jiǎn)易配置,也不允許類的構(gòu)造函數(shù)接受參數(shù)傳遞而后執(zhí)行set/get方法,或運(yùn)行時(shí)的常量定義
25. 不理解面向?qū)ο缶幊蹋∣OP)的優(yōu)勢(shì)和劣勢(shì)
26. 不視情形大小而濫用OOP
27. 自認(rèn)為實(shí)現(xiàn)可復(fù)用的軟件一定等于/需要讓你的代碼遵循OOP
28. 不利用智能缺省值
29. 沒(méi)有單一的配置文件
30. 不想暴露文件源碼,卻用.inc后綴名取代了.php
31. 不使用數(shù)據(jù)庫(kù)抽象層
32. 不能保持DRY作風(fēng),即不重復(fù)自己,如果你總是在復(fù)制粘貼一些東西,說(shuō)明你設(shè)計(jì)得很差勁
33. 沒(méi)有實(shí)現(xiàn)讓一個(gè)函數(shù)/類/方法只做一件事,也不能組合利用它們
34. 沒(méi)能嘗試OOP的特長(zhǎng),如抽象類、接口、多態(tài)、繼承,訪問(wèn)控制修飾符(譯注:如public, private, protected)
35. 不用現(xiàn)有的設(shè)計(jì)模式優(yōu)化你的程序體系設(shè)計(jì)
36. 不允許你的用戶在你擁有很多文件或目錄的情況下定義基礎(chǔ)目錄
37. 污染了名稱空間,比如用常見(jiàn)字符串命名你的庫(kù)函數(shù)
38. 使用數(shù)據(jù)庫(kù)表時(shí)不使用表前綴
39. 不使用統(tǒng)一的模板引擎
40. 不關(guān)注已有的PHP開(kāi)發(fā)框架,懶于探索;其實(shí)先進(jìn)的開(kāi)發(fā)理念和美妙代碼就蘊(yùn)含其中。
譯注:另有馬永占翻譯版本《PHP程序員的40點(diǎn)陋習(xí)》,簡(jiǎn)潔并配有譯者注釋。
相關(guān)文章
PHP 開(kāi)源框架22個(gè)簡(jiǎn)單簡(jiǎn)介
PHP 是一個(gè)被廣泛使用的來(lái)進(jìn)行Web開(kāi)發(fā)的腳本語(yǔ)言。雖然有很多其它可供選擇的Web開(kāi)發(fā)語(yǔ)言,像:ASP 和Ruby,但是PHP是目前為止世界上最為流行的。2009-08-08