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