用PHP開發健壯的代碼:編寫可重用函數_PHP教程

來源:互聯網
上載者:User
  在本文中,您將瞭解如何在 php(做為現在的主流開發語言) 中明智地使用函數。在每一種進階程式設計語言中,程式員都可以定義函數,php(做為現在的主流開發語言) 也不例外。唯一的區別在於,您不必擔心函數的傳回型別。
  
   深入研究
  函數可用於:
  
  將幾行代碼封裝成一條語句。
  
  簡化代碼。
  
  最重要的是,將應用程式作為更小的應用程式相互協調的產物。
  對於從編譯語言(如 C/C++)轉到 php(做為現在的主流開發語言) 的開發人員來說,php(做為現在的主流開發語言) 的效能層級是令人吃驚的。在使用 CPU 和記憶體資源方面,使用者定義的函數非常昂貴。這主要是因為 php(做為現在的主流開發語言) 是解釋型和鬆散類型的。
  
   封裝與否
  有些開發人員僅僅因為不喜歡函數的名稱就把他們使用的每個函數都封裝起來,而另一些開發人員卻根本不喜歡使用封裝。
  
  封裝現有的 php(做為現在的主流開發語言) 函數而不添加或補充現有的功能,是完全不能接受的。除了會增加大小和執行時間外,這樣的重新命名函數有時可能會帶來管理上的惡夢。
  
  代碼中的內嵌函式會導致莫名其妙的代碼,甚至是更大的管理災難。這樣做的唯一好處可能就是得到一個更快的代碼。
  
  更明智的方法是,僅在需要多次使用代碼,並且對於您希望實現的任務沒有可用的內建 php(做為現在的主流開發語言) 函數時才定義函數。您可以選擇重新命名或僅當需要時才有限制地使用。
  
  圖 1 中的圖表粗略地顯示了可管理性和速度與使用的函數數量之間的相互關係。(在此我沒標明單位,因為數字取決於個體和團隊的能力;這一關係是重要的可視資料。)
  
  圖 1. 可管理性/速度 Vs. 函數數量
   
  命名函數
  正如我在本系列文章的第" 2 部分(請參閱參考資料)中提到的,要獲得有效代碼管理,始終都使用公用的命名規範是必不可少的。
  
  其它兩個需要考慮的實踐是:
  
  選擇的名稱應當能很好地提示函數的功能。
  使用表明包或模組的首碼。
  
  假定您有一個名為 user 的模組,它包含使用者管理函數,那麼對於檢查使用者當前是否線上的函數而言,諸如 usr_is_online() 和 usrIsOnline() 這樣的函數名稱都是上佳之選。
  
  將上面的名稱與 is_online_checker() 這樣的函數名稱相比較。得到的結論是,使用動詞優於使用名詞,因為函數始終都會做點什麼。
  
   多少參數?
  很有可能您將使用已經構造的函數。即使情形並非如此,您可能也希望最大化代碼的使用範圍。要做到這一點,您和其他開發人員應當繼續開發便於使用的函數。沒人喜歡使用那些所帶的參數既晦澀又難於理解的函數,因此請編寫便於使用的函數。
  
  選擇一個能夠說明函數用途的名稱(並減少函數使用的參數數量)是確保便於使用的一個好方法。參數數量的幻數是什麼呢?依我看來,超過三個參數就會使函數難以記憶。使用大量參數的複雜函數幾乎都能被拆分成多個更簡單的函數。
  
  沒人喜歡使用湊合的函數。
  
   編寫優質函數
  假定您希望在將 HTML 文檔放到瀏覽器之前設定文檔的標題。標題就是 ... 標記之間的所有內容。
  
  假定您希望設定 title 和 meta 標記。不使用 setHeader(title, name, value) 函數執行所有工作,而分別使用 setTitle(title) 和 setMeta(name, value) 完成各項工作是一個更佳的解決方案。該方案相互獨立地設定 title 和 meta標記。
  
  進一步考慮,標題可以只包含一個 title 標記,但它可以包含多個 meta 標記。如果需要設定多個 meta 標記,則代碼必須多次調用 setMeta()。在這種情況下,更佳的解決方案是將帶有名稱-值對的兩維數組傳遞給 setMeta(),並且讓函數迴圈執行該數組 — 同時執行所有操作。
  
  一般來說,象這樣的同時的函數更可取。用函數需要處理的所有資料一次性調用函數,始終優於多次調用函數,並以增量的方式為其提供資料。編寫函數時的主要思想是,盡量減少從其它代碼對其的調用。

http://www.bkjia.com/PHPjc/508604.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/508604.htmlTechArticle在本文中,您將瞭解如何在 php (做為現在的主流開發語言) 中明智地使用函數。在每一種進階程式設計語言中,程式員都可以定義函數,php (做為...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.