在很多情況下PHP最可貴的特點也可能是它最薄弱的環節就是它的語法松散性。PHP能夠如此廣泛的被使用,因為它使得許多沒有經驗的Web開發者能夠制作出強大的應用程序,而用不著過多的考慮規劃、連貫性和文檔。
不幸的是,正是以上的特點,是的很多的PHP源代碼很臃腫,很難閱讀甚至無法維護。我深深的體會到這一點,因為我已經寫了很多這樣的代碼。
為了避免上面的情況以及很多其他的情況發生。很多的核心PHP開發人員和團體成員走到了一起,開始了PEAR,一個著力於增加PHP擴展和插件倉庫的項目。到現在未知,來源於PEAR項目的文檔和其他的東西還很少並且難以理解,這篇文章試圖向開發者們講述他們(PEAR小組)所做的事情。
決定代碼可維護性的重要因素是代碼的格式和注釋。一個工程的所有代碼應該以貫穿始終的形式組織。我非常堅持代碼庫的建設,我想程序員們也應如此。
(1)縮進
開發者所有的代碼應該完全按照縮進的方式書寫。這是提高代碼可讀性最基本的措施。即使你沒有注釋你的代碼,縮進對於讓其他人讀懂你的代碼也是非常大的幫助。
例如下面的例子:
while ($x < $z) {
if ($a == 1) {
echo 'A was equal to 1';
} else {
if ($b == 2) {
//do something
} else {
//do something else
}
}
}
PEAR草案標准要求利用4個空格縮進而不是利用tab。我個人並不同意這個觀點,我想我仍然會繼續利用tab鍵。我認為使用tab比多個空格能夠讓文件變得更小。而更小的文件能夠更快的被解釋、上載、下載等等。而使用tab還有一個很大的有點,就是當觀看其他人的代碼時,你能夠自己設置tab鍵的空格數。我通常使用8個空格長度的tab鍵設置,但是最近換成了4個空格長度的,呵呵,我把他稱為代碼的成重新格式化,僅僅是個人的愛好啦。
(2)控制結構
這個很大程度上取決於個人口味。我仍然可以看到很多的控制結構代碼不帶分支語句造成可讀性非常差,如果你使用IF語句時不帶分支,不但可讀性變差,當其他人修改你的程序時,還會造成很多的bug。請看下例:
不好的例子:
if ($a == 1) echo 'A was equal to 1';
這是非常難以辨認的。它能夠正常工作,但是除了你之外,別人根本不會贊賞這句代碼。
有改進的例子:
if ($a == 1)
echo 'A was equal to 1';
現在至少這句代碼可以讀懂了,但是仍然沒有很好的可維護性。如果當$a==1的時候我希望一個附加的事件發生,或者需要添加分支呢?如果後來的程序員忘記了添加大括弧或者else關鍵字,那麼程序中將出現bug。
完美的例子
if (($a == 1) && ($b==2)) {
echo 'A was equal to 1';
//很容易的可以添加其他代碼
} elseif (($a == 1) && ($b==3)) {
//其他操作
}
請注意在if和elseif後面的空格,這會將本語句和函數調用區分開來,此外,雖然在elseif的執行程序段中沒有語句,只有注釋,表面上顯得多余可是卻給以後維護程序的程序員給予了非常方便的提示,並且非常利於添加功能。