PHP編程的五個良好習慣_PHP教程

來源:互聯網
上載者:User

根據具體的情況,一般的開發人員往往比優秀的開發人員的效率低 10%~20%。優秀的開發人員的效率更高,因為他們擁有豐富的經驗和良好的編程習慣。不良的編程習慣將會影響到效率。本文通過展示一些良好的編程習慣,協助您成為更優秀的程式員。

這些良好的編程習慣不僅能提高效率,還能讓您編寫出在應用程式的整個生命週期中易於維護的代碼。編寫出來的代碼可能需要大量的維護;應用程式的維護是一筆很 大的開支。養成良好的編程習慣能夠提高設計品質(比如模組化),從而使代碼更加容易理解,因此維護就更加容易,同時也降低維護成本。

不良的編程習慣會造成代碼缺陷,使其難以維護和修改,並且很可能在修改時又引入其他缺陷。以下是 5 個良好的編程習慣,能夠協助 PHP 代碼避免這些缺陷:

◆使用良好的命名。

◆分成更小的部分。

◆為代碼添加註釋。

◆處理錯誤條件。

◆切忌使用複製粘貼。

下面將詳細介紹這些習慣:

使用良好的命名

使用良好的命名是最重要的編程習慣,因為描述性強的名稱讓代碼更加容易閱讀和理解。代碼是否好理解取決於是否能在未來維護它。即便代碼不帶有注釋,如果它很容易理解,將大大方便日後的更改。這個習慣的目標是讓您編寫的代碼像書本一樣容易閱讀和理解。

不良習慣:含糊的或無意義的名稱

清單 1 中的程式碼封裝含過短的變數名、難以辨認的縮寫詞,並且方法名不能反映該方法的功能。如果方法名給人的感覺是它應該做這件事情,而實際中它卻做另外的事情,這將帶來嚴重的問題,因為它會誤導人。

清單 1. 不良習慣:含糊的或無意義的名稱

<?php

function getNBDay($d){
switch($d) {
case 5:
case 6:
case 7:
return 1;
default:
return ($d + 1);
}
}

$day = 5;

$nextDay = getNBDay($day);

echo ("Next day is: " . $nextDay . "n");

?>


良好習慣:說明性強並且簡潔的名稱

清單 2 中的代碼體現了良好的編程習慣。新的方法名具有很強的說明性,反映了方法的用途。同樣,更改後的變數名也更具說明性。惟一的保持最短的變數是 $i,在本清單中,它是一個迴圈變數。儘管很多人不贊同使用過短的名稱,但在迴圈變數中使用還是可以接受的(甚至有好處),因為它明確表明了代碼的功能。

清單 2. 良好習慣:說明性強並且簡潔的名稱

<?php
define (MONDAY, 1);
define (TUESDAY, 2);
define (WEDNESDAY, 3);
define (THURSDAY, 4);
define (FRIDAY, 5);
define (SATURDAY, 6);
define (SUNDAY, 7);
/*
*
* @param $dayOfWeek
* @return int Day of week, with 1 being Monday and so on.
*/
function findNextBusinessDay($dayOfWeek){
$nextBusinessDay = $dayOfWeek;
switch($dayOfWeek) {
case FRIDAY:
case SATURDAY:
case SUNDAY:
$nextBusinessDay = MONDAY;
break;
default:
$nextBusinessDay += 1;
break;
}
return $nextBusinessDay;
}
$day = FRIDAY;
$nextBusDay = findNextBusinessDay($day);
echo ("Next day is:" . $nextBusDay . "n");
?>


我們鼓勵您將大的條件拆分為一個方法,然後用能夠描述該條件的名字命名方法。這個技巧能夠提高代碼的可讀性,並且能夠將條件具體化,使之能夠被提取甚至重用。如果條件發生變化,更新方法也很容易。因為方法擁有一個有意義的名字,所以它能反映代碼的用途,讓代碼更容易閱讀。

分成更小的部分

專心解決一個問題之後再繼續編程,這樣會讓您更輕鬆。在解決一個緊急的問題時,如果繼續編程,會使函數越來越長。從長遠來說,這並不是一個問題,但您要記得回過頭來將它重構為更小的部分。

重構是個不錯的主意,但您應該養成編寫更短、功能更集中的代碼。短的方法能夠在一個視窗中一次看完,並且容易理解。如果方法過長,不能在一個視窗中一次看完,那麼它就變得不容易理解,因為您不能快速地從頭到尾瞭解它的整個思路。

構建方法時,您應該養成這樣的習慣,讓每個方法只完成一件事情。這個習慣很好,因為:首先,如果方法只完成一件事情,那麼它就更容易被重用;其次,這樣的方法容易測試;第三,這樣的方法便於理解和更改。

不良習慣:過長的方法(完成很多件事情)

清單 3 展示了一個很長的函數,其中存在很多問題。它完成很多件事情,因此不夠緊湊。它也不便於閱讀、調試和測試。它要做的事情包括遍曆一個檔案、構建一個列表、為每個對象賦值、執行計算等等。

清單 3. 不良習慣:過長的函數

<?php

function writeRssFeed($user)
{
// Get the DB connection information


// look up the users preferences...
$link = mysql_connect(mysql_host, mysql_user, mysql_password)
OR die(mysql_error());

// Query
$perfsQuery = sprintf("SELECT max_stories FROM user_perfs WHERE user= %s",
mysql_real_escape_string($user));

$result = mysql_query($query, $link);

$max_stories = 25; // default it to 25;

if ($row = mysql_fetch_assoc($result)) {
$max_stories = $row[max_stories];
}

// go get my data
$perfsQuery = sprintf("SELECT * FROM stories WHERE post_date = %s",
mysql_real_escape_string());

$result = mysql_query($query, $link);


$feed = "<rss version="2.0">" .
"<channel>" .
"<title>My Great Feed</title>" .
"<link>http://www.example.com/feed.xml</link>" .
"<description>The best feed in the world</description>" .
"<language>en-us</language>" .
"<pubDate>Tue, 20 Oct 2008 10:00:00 GMT</pubDate>" .
"<lastBuildDate>Tue, 20 Oct 2008 10:00:00 GMT</lastBuildDate>" .
"<docs>http://www.example.com/rss</docs>" .
"<generator>MyFeed Generator</generator>" .
"<managingEditor>editor@example.com</managingEditor>" .
"<webMaster>webmaster@example.com</webMaster>" .
"<ttl>5</ttl>";

// build the feed...
while ($row = mysql_fetch_assoc($result)) {
$title = $row[title];
$link = $row[link];
$description = $row[descrip

http://www.bkjia.com/PHPjc/486603.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/486603.htmlTechArticle根據具體的情況,一般的開發人員往往比優秀的開發人員的效率低 10%~20%。優秀的開發人員的效率更高,因為他們擁有豐富的經驗和良好的...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.