PHP編碼規范

轉自:https://gold.xitu.io/post/589d7771128fe100580e7bcc

為什么需要編碼規范?

  • 為了提高工作效率,保證開發的有效性和合理性。

  • 為了提高代碼可讀性和可重復利用性,從而節約溝通成本。

本文主要參考了 PEAR 規范,并進行適當的簡化和調整。

主要介紹,命名規范、注釋規范、代碼風格。

文件標記

所有PHP文件,代碼標記均使用完整的PHP標簽,不建議使用短標簽。

<?php
  echo 'Hello world';
?>

<?
  //短標簽不推薦
  echo 'Hello world';
?>

文件格式

文件編碼 為無 BOM 的 UTF-8。

??純PHP類文件,文件最后 ?> 要省略。

TextMate

在 "文件編碼" 中,選擇 "UTF-8(推薦)"
在 "換行符" 中,選擇 "LF(推薦)"

文件命名

程序的文件名和目錄名都采用有意義的英文命名。

不使用拼音或無意義的字母。

只允許出現字母、數字、下劃線、中劃線字符。

多個詞之間使用駝峰命名法。

//類統一采用

demoTest.class.php

//接口統一采用

demoTest.interface.php

//其他按照各自的方式

demoTest.{style}.php

//其他文件參照

demoTest.inc.php
demo.lib.php

文件目錄結構命名

因使用的框架不同,可根據實際情況考慮目錄結構。

全局變量命名

$_GLOBAL['_startTime_']

or

$_GLOBAL['g_startTime_']

兩邊都有“_”,中間使用駝峰命名。

普通變量命名

數據類型 命名規范
字符串 $strMyStr
數組 $arrMyArray
對象 $objMyObject
布爾值 $flagMyFlag
采用駝峰命名,建議在變量前加上變量的類型作為前綴。

變量應該以名詞為準,盡量避免使用常用關鍵字或存在模糊意義的單詞。

私有變量,建議加上前綴"_"。

函數命名

函數名即要有意義,也要盡量縮寫,一看就知道干什么。

建議單用動詞或動詞加形容詞的格式命名。

私有方法,建議在加上前綴"_"。

//例如

private function _showMsg()
{
   //方法體
}

不建議下面這樣的函數名:

public function getAdvertisementByCategoryIdAndPositionIdAndScheduleId()
{
   //方法體
}

可修改為:

public function getAd($categoryid, $positionid, $scheduleid)
{
   //方法體
}

習慣與約定

為了減少變量的長度,在不影響可讀性的前提下,習慣對變量進行縮寫。

全稱 縮寫
image img
string str
database db
array arr
count cnt
message msg
password passwd 或 pwd
... ...
以上規范可用于,PHP代碼、JavaScript代碼、數據庫表字段命名等。

文件注釋

    /**
     * 文件的簡述
     *
     * PHP Version 6(PHP版本)
     *
     * @category  可以寫部門(英文)
     * @package   可以寫模塊(英文)
     * @author    test <test@company.com>
     * @time      2017/02/02 11:48
     * @copyright 2017 公司名稱
     * @license   公司網址 license
     * @link      test@qq.com(作者聯系方式)
     */

類注釋

/**
 * 類的簡述
 *
 * @category 可以寫部門(英文)
 * @package  可以寫模塊(英文)
 * @author   test <test@company.com>
 * @license  公司網址 license
 * @link     test@qq.com(作者聯系方式)
 */

方法注釋

/**
 * 方法的簡述
 * @param array  $myArray  參數解釋
 * @param string $myString 參數解釋
 * @return array(返回數據類型)
 */

代碼注釋

注釋寫在被注釋代碼的前面,而不是后面,但對于單行語句,注釋可寫在語句末尾。

對于大段注釋,使用 / / 進行注釋。

注釋不宜太多,大家能看的懂得行不必注釋。

代碼注釋應該描述為什么,而不是做什么。

不要為了注釋而注釋。

標注的使用

IDE 支持一些特殊注釋,可以列出整個項目中的特殊注釋,方便后期維護和代碼檢查。

例如:

//@fixMe 表示需要修復項。

//@todo 表示需要完善的地方。

代碼風格

盡量保證程序語句一行就是一句。

盡量不要使一行的代碼過長,一般控制在80個字符之間。

如果一行代碼太長,請使用類似 “.=” 的方式斷行書寫。

類、方法的做大括號需要獨占一行。

其他控制語句等大括號和表達式同一行,并空格隔開。

class Demo
{
    public function index()
    {
        for ($i = 1, $i < 10, $i++) {

        }
    }

public function test()
{
    if ($expr1) {
        //if body

    } elseif ($expr2) {
        //elseif body

    } else {
        //else body

    }

    foreach ($data as $key => $value) {
        //foreach body
    }

    switch ($expr1) {
        case 0:
            echo '零';
            break;
        case 1:
            echo '一';
            break;
        default:
            echo 'null';
            break;
    }

    //盡量同等意義的變量等號對其
    $strName     = $arrUserInfo['name'];
    $strAge      = $arrUserInfo['age'];
    $strBirthday = $arrUserInfo['birthday'];
    $strHobby    = $arrUserInfo['hobby'];
}
}

調試代碼

不要在你的提交的代碼中包含調試代碼,就算是注釋掉了也不行。

像 var_dump() 、 print_r() 、 die() 和 exit() 這樣的函數。

PHP錯誤

運行代碼時不應該出現任何錯誤信息,并不是把警告和提示信息關掉來滿足這一點。

例如,絕不要直接訪問一個你沒設置過的變量,你應該先使用 isset() 函數判斷下。

最后

最后說的是,本規范不是強制,也不是標準。

“約定大于規范”,如果有的規范太死板,不適應您的團隊,您可以不采用,按照您自己的規范即可。

推薦PHP開發IDE:PHPStorm 。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 整理自 PHP 標準規范 作為程序員來說,采用統一的編碼風格是非常重要的。這將給未來代碼的編寫、閱讀節省大量時間。...
    野塵lxw閱讀 720評論 0 2
  • 為什么需要編碼規范? 為了提高工作效率,保證開發的有效性和合理性。 為了提高代碼可讀性和可重復利用性,從而節約溝通...
    新亮筆記閱讀 427評論 4 4
  • 1.什么是RDS數據庫? RDS數據庫是在一個實例下創建的邏輯單元,一個實例可以創建多個數據庫,在實例內數據庫命名...
    Separes閱讀 2,501評論 0 2
  • 源文來自https://github.com/TIGERB/easy-tips,分享給大家 共同進步 編碼規范 P...
    回眸淡然笑閱讀 528評論 0 0
  • 編程規范在團體開發中能使程序員按照統一標準編程,消除了混亂和迷茫,能使他們將精力聚焦于更重要的事情,而不是變量如何...
    剛剛悟道閱讀 388評論 1 3