程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP編程的五個良好習慣

PHP編程的五個良好習慣

編輯:關於PHP編程

根據具體的情況,一般的開發人員往往比優秀的開發人員的效率低 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>[email protected]</managingEditor>" .
        "<webMaster>[email protected]</webMaster>" .
        "<ttl>5</ttl>";
   
        // build the feed...
        while ($row = mysql_fetch_assoc($result)) {
            $title = $row[title];
            $link = $row[link];
            $description = $row[descrip

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved