經(jīng)驗(yàn)分享:PHP編程的5個(gè)良好習(xí)慣(三)
學(xué)習(xí)良好的編程習(xí)慣能夠提高代碼質(zhì)量和效率。像其他語(yǔ)言一樣,開(kāi)發(fā)人員可以用 PHP 編寫(xiě)出各種質(zhì)量級(jí)別的代碼。根據(jù)具體的情況,一般的開(kāi)發(fā)人員往往比優(yōu)秀的開(kāi)發(fā)人員的效率低 10%~20%。優(yōu)秀的開(kāi)發(fā)人員的效率更高,因?yàn)樗麄儞碛胸S富的經(jīng)驗(yàn)和良好的編程習(xí)慣。不良的編程習(xí)慣將會(huì)影響到效率。本文通過(guò)展示一些良好的編程習(xí)慣,幫助您成為更優(yōu)秀的程序員。
接上一篇,經(jīng)驗(yàn)分享:PHP編程的5個(gè)良好習(xí)慣(二)
5. 切忌使用復(fù)制粘貼
您可以從其他地方將代碼復(fù)制粘貼到自己的代碼編輯器,但這樣做有利也有弊。好的一面是,從一個(gè)示例或模板中復(fù)制代碼能夠避免很多錯(cuò)誤。不好的一面是,這容易帶來(lái)大量的類(lèi)似編程方式。
一定要注意,不要將代碼從應(yīng)用程序的一部分復(fù)制粘貼到另一部分。如果您采用這種方式,請(qǐng)停止這個(gè)不良的習(xí)慣,然后考慮將這段代碼重寫(xiě)為可重用的。一般而言,將代碼放置到一個(gè)地方便于日后的維護(hù),因?yàn)檫@樣只需在一個(gè)地方更改代碼。
不良習(xí)慣:類(lèi)似的代碼段
清單 9 給出了幾個(gè)幾乎一樣的方法,只是其中的值不同而已。有一些工具可以幫助找到復(fù)制粘貼過(guò)來(lái)的代碼(參見(jiàn) 參考資料)。
清單 9. 不良習(xí)慣:類(lèi)似的代碼段
- <?php
- /**
- * Counts the number of messages found in the array of
- * ResultMessage with the getSeverity() value of "Error"
- * @param $messages An array of ResultMessage
- * @return unknown_type
- */
- function countErrors($messages)
- {
- $matchingCount = 0;
- foreach($messages as $m) {
- if ($m->getSeverity() == "Error") {
- $matchingCount++;
- }
- }
- return $matchingCount;
- }
- /**
- * Counts the number of messages found in the array of
- * ResultMessage with the getSeverity() value of "Warning"
- *
- * @param $messages An array of ResultMessage
- * @return unknown_type
- */
- function countWarnings($messages)
- {
- $matchingCount = 0;
- foreach($messages as $m) {
- if ($m->getSeverity() == "Warning") {
- $matchingCount++;
- }
- }
- return $matchingCount;
- }
- /**
- * Counts the number of messages found in the array of
- * ResultMessage with the getSeverity() value of "Information"
- *
- * @param $messages An array of ResultMessage
- * @return unknown_type
- */
- function countInformation($messages)
- {
- $matchingCount = 0;
- foreach($messages as $m) {
- if ($m->getSeverity() == "Information") {
- $matchingCount++;
- }
- }
- return $matchingCount;
- }
- $messages = array(new ResultMessage("Error", "This is an error!"),
- new ResultMessage("Warning", "This is a warning!"),
- new ResultMessage("Error", "This is another error!"));
- $errs = countErrors($messages);
- echo("There are " . $errs . " errors in the result.\n");
- 63.?>
復(fù)制代碼良好習(xí)慣:帶參數(shù)的可重用函數(shù)
清單 10 展示了修改后的代碼,它將復(fù)制的代碼放到一個(gè)方法中。另一個(gè)方法也進(jìn)行了更改,它現(xiàn)在將任務(wù)委托給新的方法。構(gòu)建通用的方法需要花時(shí)間設(shè)計(jì),并且這樣做使您能停下來(lái)思考,而不是本能地使用復(fù)制粘貼。但有必要進(jìn)行更改時(shí),對(duì)通用的方法投入的時(shí)間將得到回報(bào)。
清單 10. 良好習(xí)慣:帶參數(shù)的可重用函數(shù)
- <?php
- /*
- * Counts the messages with the given severity in the array
- * of messages.
- * @param $messages An array of ResultMessage
- * @return int Count of messages matching $withSeverity
- */
- function countMessages($messages, $withSeverity)
- {
- $matchingCount = 0;
- foreach($messages as $m) {
- if ($m->getSeverity() == $withSeverity) {
- $matchingCount++;
- }
- }
- return $matchingCount;
- }
- /**
- * Counts the number of messages found in the array of
- * ResultMessage with the getSeverity() value of "Error"
- * @param $messages An array of ResultMessage
- * @return unknown_type
- */
- function countErrors($messages)
- {
- return countMessages($messages, "Errors");
- }
- /**
- * Counts the number of messages found in the array of
- * ResultMessage with the getSeverity() value of "Warning"
- * @param $messages An array of ResultMessage
- * @return unknown_type
- */
- function countWarnings($messages)
- {
- return countMessages($messages, "Warning");}
- /**
- * Counts the number of messages found in the array of
- * ResultMessage with the getSeverity() value of "Warning"
- *
- * @param $messages An array of ResultMessage
- * @return unknown_type
- */
- function countInformation($messages)
- {
- return countMessages($messages, "Information");
- }
- $messages = array(new ResultMessage("Error", "This is an error!"),
- new ResultMessage("Warning", "This is a warning!"),
- new ResultMessage("Error", "This is another error!"));
- $errs = countErrors($messages);
- echo("There are " . $errs . " errors in the result.\n");
- ?>
結(jié)束語(yǔ)
如果您在編寫(xiě) PHP 代碼的過(guò)程中養(yǎng)成本文討論的良好習(xí)慣,您將能夠構(gòu)建易讀、易理解、易維護(hù)的代碼。使用這種方式構(gòu)建的易維護(hù)代碼將降低調(diào)試、修復(fù)和擴(kuò)展代碼所面臨的風(fēng)險(xiǎn)。
使用良好的名稱(chēng)和更短的方法能夠提高代碼的可讀性。注釋代碼的目的有利于代碼理解和擴(kuò)展。適當(dāng)?shù)靥幚礤e(cuò)誤會(huì)使代碼更加健壯。***,停止使用復(fù)制粘貼,保持代碼干凈,提高可重用性。
到這,五個(gè)良好的習(xí)慣都給大家介紹完了。希望對(duì)你有幫助。
【編輯推薦】