2008年3月31日 星期一

基本 php 書寫習慣

1. 變數定義簡潔清楚, 位置恰當, 並加上註解.
我個人的習慣是盡量在 segment ( { ... } 所括) 的開頭定義變數,
一定義就是一串, 後面是註解.

例外是迴圈變數, 我一定是 $i $j $k 一路寫下去 XD
foreach 就搭 $data, 外部讀入一定是 $buff

2. 在檔案起頭加上適當註解, 包含所屬專案, 建立日期, 修改日期及修改摘要,
如果是 include file 則應再加上內部所含 function / class 及 method
之意義, 最好再有個小註解.

3. Template engine 應用則用, 當省則省.
不是每個專案都應該要套這東西上去, 但我也不認為 coder 能因此而不學 XD
對不使用樣版引擎的 php script 來說, 應盡量使得程式碼與 html 分開,
並適當在此加上註解, 以便日後修改除錯.

4. 適當的將 function / class 分門別類存好, 以增加程式碼可再用性.

5. 程式碼的使用應具有適當階層 (或封裝)
避免出現跨層的函式呼叫, 必要時可在中間層內建立 dummy function.

6. 如果是對 php 的 function 本身有意見, 那麼查 php 官網永遠是第一選擇.
底下的 User's Comments 更是很好的資料來源.
沒有足夠的英文能力 ? 請自修, 這東西目前仍是學習程式語言的王道.

7. 與 php 相關的 httpd (如 IIS, PWS, Apache, Xitami, thttpd), 底下的
DBs (via ODBC, direct call for MySQL, MSSQL, Oracle (凱子)) 也應有
涉獵, 因為它們也能幫你解決很多問題.

8. 沒事請多學其它程式語言, 因為你不確定幾時會從中得到幫助.
並且, 不同語言自有不同的概念, 掌握到之後, 總是能產生些新想法的.

9. 善用 Reference.
$a = new A();
這樣寫法會產生出兩個 class A, 這應該很多人知道了吧.
許多不自覺的寫法, 會產生系統資源的浪費 (並造成某些錯誤)
但不正確的 Reference 用法, 則會產生許多錯誤 XD

所以, 請在日常生活中大量使用, 讓自己好好習慣它.

10. Google & Trial
不懂的知識就 google, 不確定的寫法就自己寫了踹踹看,
不要把任何地方的玩家, 當成你的除錯程式.

沒事多 var_dump, print_r 電腦不會恨你 (喔, 你倒是會恨自己, 因為它們只
會以\n 斷行 XD)
但一直問 FAQ 級的問題, 你大概只會得到 RTFM 這項回應.








如果碰到的是 "為什麼跑起來是這種結果" 這樣的問題,
就有可能要和 var_dump() 及 print_r() 兩個函數當好朋友了.
這兩個函數可以說是繼 "echo everywhere" 之後, 第二個好 php 除錯方式.
(以不使用其他除錯程式為前題啦)
(也就是說, 這邊指的問題是對 "輸出不如預期", 而非 "程式發生錯誤" 用的)

但這兩個函式都有缺點, 就是他們的輸出只會以 \n 斷行,
並且都會直接將輸出送往網頁. 如果要改成在 browser 內好看的
斷行
會有點累 ^^;; 你可能可以透過 output_buffer, 將它讀回, 修改, 取消再送出來做到
不過這種事光想到就很苦, 更別說是去做它了
(所以我都是選擇進 console, 直接 /usr/local/php/php -q XXX.php 來看 XD)

最後是說如果你問的問題太初階, 近似於 FAQ (Frequent Asked Questions) 的話,
那麼在以上幾種解決方式 (當然, 還包含了爬文跟精華區) 應該都能找得到解.
把這些問題丟出來的後果, 大概就是會被回 RTFM (Read The Fxxxing Manual)
(或是 STFG, Search The Fxxxing Google)