1. 程式人生 > >提高程式碼質量-----php要提升的

提高程式碼質量-----php要提升的

關於php  現在主要糾結在 怎麼寫出  好看的程式碼 如   用面向物件的思想程式設計   用到設計模式   寫高質量的程式碼 提高演算法效率  所以在此轉載一些能改進我的這幾個方面的知識  學習 一下  也希望大俠們 有什麼好的建議  可以提出   注:要自己的親身體驗哦......

下面是轉載內容:

1.不要使用相對路徑

常常會看到:

  1. require_once('../../lib/some_class.php'); 

該方法有很多缺點:

它首先查詢指定的php包含路徑, 然後查詢當前目錄.

因此會檢查過多路徑.

如果該指令碼被另一目錄的指令碼包含, 它的基本目錄變成了另一指令碼所在的目錄.

另一問題, 當定時任務執行該指令碼, 它的上級目錄可能就不是工作目錄了.

因此最佳選擇是使用絕對路徑:

  1. define('ROOT' , '/var/www/project/');  
  2. require_once(ROOT . '../../lib/some_class.php');  
  3. //rest of the code 

我們定義了一個絕對路徑, 值被寫死了. 我們還可以改進它. 路徑 /var/www/project 也可能會改變, 那麼我們每次都要改變它嗎? 不是的, 我們可以使用__FILE__常量, 如:

  1. //suppose your script is /var/www/project/index.php  
  2. //Then __FILE__ will always have that full path.  
  3. define('ROOT' , pathinfo(__FILE__, PATHINFO_DIRNAME));  
  4. require_once(ROOT . '../../lib/some_class.php');  
  5. //rest of the code 

現在, 無論你移到哪個目錄, 如移到一個外網的伺服器上, 程式碼無須更改便可正確執行.

2. 不要直接使用 require, include, include_once, required_once

可以在指令碼頭部引入多個檔案, 像類庫, 工具檔案和助手函式等, 如:

  1. require_once('lib/Database.php');  
  2. require_once('lib/Mail.php');  
  3. require_once('helpers/utitlity_functions.php'); 

這種用法相當原始. 應該更靈活點. 應編寫個助手函式包含檔案. 例如:

  1. function load_class($class_name)  
  2. {  
  3.  //path to the class file  
  4.  $path = ROOT . '/lib/' . $class_name . '.php');  
  5.  require_once( $path );  
  6. }  
  7. load_class('Database');  
  8. load_class('Mail'); 

有什麼不一樣嗎? 該程式碼更具可讀性.

將來你可以按需擴充套件該函式, 如:

  1. function load_class($class_name)  
  2. {  
  3.   //path to the class file  
  4.     $path = ROOT . '/lib/' . $class_name . '.php');  
  5.   if(file_exists($path))  
  6.     {  
  7.  require_once( $path );  
  8.         }  

還可做得更多:

為同樣檔案查詢多個目錄

能很容易的改變放置類檔案的目錄, 無須在程式碼各處一一修改

可使用類似的函式載入檔案, 如html內容.

3. 為應用保留除錯程式碼

在開發環境中, 我們列印資料庫查詢語句, 轉存有問題的變數值, 而一旦問題解決, 我們註釋或刪除它們. 然而更好的做法是保留除錯程式碼.

在開發環境中, 你可以:

  1. define('ENVIRONMENT' , 'development');  
  2. if(! $db->query( $query )  
  3. {  
  4.    if(ENVIRONMENT == 'development')  
  5.    {  
  6.       echo "$query failed";  
  7.   }  
  8.    else  
  9.     {  
  10.        echo "Database error. Please contact administrator";  
  11.     }  

在伺服器中, 你可以:

  1. define('ENVIRONMENT' , 'production');  
  2. if(! $db->query( $query )  
  3. {  
  4.    if(ENVIRONMENT == 'development')  
  5.    {  
  6.        echo "$query failed";  
  7.    }  
  8.     else  
  9.     {  
  10.         echo "Database error. Please contact administrator";  
  11.     }  

4. 使用可跨平臺的函式執行命令

system, exec, passthru, shell_exec 這4個函式可用於執行系統命令. 每個的行為都有細微差別. 問題在於, 當在共享主機中, 某些函式可能被選擇性的禁用. 大多數新手趨於每次首先檢查哪個函式可用, 然而再使用它.

更好的方案是封成函式一個可跨平臺的函式。

    相關推薦

    提高程式碼質量-----php提升

    關於php  現在主要糾結在 怎麼寫出  好看的程式碼 如   用面向物件的思想程式設計   用到設計模式   寫高質量的程式碼 提高演算法效率  所以在此轉載一些能改進我的這幾個方面的知識  學習 一下  也希望大俠們 有什麼好的建議  可以提出   注:要自己

    linux下提高程式碼質量的幾個工具

    1、測試程式碼覆蓋率   gcov 2、程式碼靜態測試   splint 3、記憶體洩漏測試    valgrind --tool=memcheck --leak-check=yes ./file 4、效能測試     gpro

    SonarQube與Jenkins結合提高程式碼質量

    首先,為什麼需要SonarQube? 1、WriteClean Code 1)全域性健康報告  2)關注新增的問題  3)強制QualityGate 4)Issue詳情及建議… 詳情參考:https://www.sonarqube.org/features/clean-c

    idea,配置checkstyle 【提高程式碼質量,檢查程式碼規範的工具 】Checkstyle,FindBugs,PMD,Jtest

    idea,配置checkstyle 【提高程式碼質量,檢查程式碼規範的工具 】Checkstyle,FindBugs,PMD,Jtest 2016年12月15日 14:19:02 common_util 閱讀數:18818更多 個人分類: 開發 版權宣告:本文為博主原創文章,可以轉載分

    C#中使用try catch和using如何提高程式碼質量

    簡介: try catch我們之前說過是處理異常的,其實主要處理異常的是catch,而finally中是釋放資源的,說白了using在C# 中也是讓使用資源的物件釋放資源的,無疑和finally差不多,

    程式碼質量管理工具】--使用sonarLint提高程式碼質量

    【背景】        專案組,在12月份的時候使用了強大的程式碼質量管理工具--Sonar來檢測規範我們的程式碼,但是當時使用的時候會有一個缺陷,就是我每使用一次maven命令將程式碼掃描到sona

    php程式設計師努力突破的瓶頸-----php提升

    作為Web開發中應用最廣泛的語言之一,PHP有著大量的粉絲,那麼你是一名優秀的程式設計師嗎?在進行自我修煉的同時,你是否想過面對各種各樣的問題,我該如何突破自身的瓶頸,以便更好的發展呢? PHP工程師面臨成長瓶頸 先明確這裡所指的PHP工程師,是指主要以PHP進行Web系統的開發,沒有使用其的語言工

    用 Eclipse 外掛提高程式碼質量

    開發軟體時,我的主要目標之一是:要麼防止將缺陷引入程式碼庫,要麼限制缺陷的生存期;換言之,要儘早找到缺陷。很顯然,越是瞭解如何編寫更好的程式碼以及如何有效測試軟體,就越能及早地捕捉到缺陷。我也很想要一張能發現潛在缺陷的安全之網。 在本系列 八月份 的那期文章中,我得出了這樣

    提高程式碼質量,從觀念到實踐--Clean Code 培訓總結

    程式設計價值觀 之前我總是認為好的程式碼精簡是第一位,這樣才夠“優雅”,我寫20行程式碼的功能,別人10行就能實現就是比我厲害。但在工程的世界,程式設計師寫程式碼不只是給自己看的,還要考慮到後面會有同事要來維護你的程式碼。因此什麼是好程式碼要重新定義:不應該追

    提高程式碼質量-工具篇

    在這片文章中,我將從工具使用的角度上講述如何提高 Android 程式碼質量,這些自動化工具包括 Checksytle、Findbugs、PMD 和 Android Lint. 團隊中程式碼意識不一致,水平參差不齊,程式碼風格迥異,定下的規範也是熟視無睹。這時候就需要藉助工具的力量,利用工具自動地幫助我

    idea,配置checkstyle 【提高程式碼質量,檢查程式碼規範的工具 】Checkstyle

    CheckStyle是SourceForge下的一個專案,提供了一個幫助JAVA開發人員遵守某些編碼規範的工具。它能夠自動化程式碼規範檢查過程,從而使得開發人員從這項重要,但是枯燥的任務中解脫出來。 CheckStyle檢驗的主要內容 列表內容 Jav

    不知道怎麼提高程式碼質量?來看看這幾種設計模式吧!

    ## 提高程式碼質量的目的 程式猿的本職工作就是寫程式碼,寫出高質量的程式碼應該是我們的追求和對自己的要求,因為: > 1. 高質量的程式碼往往意味著更少的BUG,更好的模組化,是我們擴充套件性,複用性的基礎 > 2. 高質量的程式碼也意味著更好的書寫,更好的命名,有利於我們的維護 ## 什

    PHP提升程式碼質量之36計

    轉載:https://www.binarytides.com/35-techniques-to-enhance-your-php-code/ 1.不要使用相對路徑 常常會看到: require_once('../../lib/some_class.php');   該方法有很多缺

    36計教您如何提高PHP程式碼質量(二) 轉自csdn

    7、 在某地方收集所有輸入, 一次輸出給瀏覽器 這稱為輸出緩衝, 假如說你已在不同的函式輸出內容: <?php function print_header() { echo "<div id='header'>Site Lo

    《隨筆十八》——C#中的 “ 【《Effective C#》提煉總結】提高Unity中C#程式碼質量的22條準則 ”

    目錄 引言 本文內容思維導圖式總結 原則1:儘可能地使用屬性,而不是可直接訪問的資料成員 原則2:偏向於使用執行時常量而不是編譯時常量 原則3: 推薦使用is 或as操作符而不是強制型別轉換 原則4: 推薦使用條件屬性而不是#if條件編譯 原則5:理解幾個等同性判斷之

    技術管理者---提升研發程式碼質量---程式碼稽核Code Review

    本文是《技術管理者---提升研發程式碼質量》系列文章第三篇,第一篇整體介紹請看博文《技術管理者---提升研發程式碼質量---總體方法論》,第二篇整體介紹請看博文《技術管理者---提升研發程式碼質量---程式碼檢查工具Sonar》。本文重點講兩部分內容:1)GitLab MergeRequest介紹;

    技術管理者---提升研發程式碼質量---程式碼檢查工具Sonar

    本文是《技術管理者---提升研發程式碼質量》系列文章第二篇,第一篇整體介紹請看博文《技術管理者---提升研發程式碼質量---總體方法論》。本文重點講三部分內容:1)sonar是什麼,研發體系如何利用sonar提供程式碼質量;2)開發過程中如何使用Sonar保證程式碼質量;3)

    提高Unity中C#程式碼質量的21條準則

    作者:Williammao, 騰訊移動客戶端開發工程師  商業轉載請聯絡騰訊WeTest獲得授權,非商業轉載請註明出處。  原文連結:http://wetest.qq.com/lab/view/290.html WeTest 導讀 我們知道,在C++領域,作為進階

    提高 Unity 中 C# 程式碼質量的 21 條準則

    本文將《Effective C# Second Edition》一書中適用於 Unity 遊戲引擎裡使用 C# 的經驗之談進行了提煉,總結成為21條(一開始總結的是22條,後來發現第22條也是.NET的特性,Unity版本的mono並沒有實現,所以嚴格意義上來說是2

    【《Effective C#》提煉總結】提高Unity中C#程式碼質量的22條準則

    毛星雲,網路ID「淺墨」,90後,熱愛遊戲開發、遊戲引擎、計算機圖形、實時渲染等技術,就職於騰訊互娛。 微軟最有價值專家 著作《Windows遊戲程式設計之從零開始》、《OpenCV3程式設計入門》 碩士就讀於南京航空航天大學航天學院(2013級碩士研究生),已於2016年三月畢業。本科