理解學習PHP編碼規範之源檔案的編碼規範

來源:互聯網
上載者:User
開頭注釋

所有的源檔案都應該在開頭有一個C語言風格的注釋,其中列出類名、功能、版本資訊、日期、作者和著作權聲明:


/*
 * 類名
 * 功能
 * 版本
 * 日期
 * 作者
 * 著作權
 */

如果對檔案進行了修改,應該在檔案頭中說明修改目的、修改日期、修改人,並變更檔案的版本資訊;如果修改問檔案的一部分,則在檔案中進行注釋即可,並且標識出修改部分的起止位置

……

/*
 * 修改目的
 * 修改日期
 * 修改人
 * 版本
 */

……

修改起始

……

……

修改結束

……

3.2 引入語句

引入語句應該位於檔案的頭部,並在引入時說明引入檔案的作用。例如:

//資料庫操作類
require( “db.php” );

3.3 類的聲明

1 類文檔注釋(/**……*/) 該注釋中所需包含的資訊,參見"文檔注釋"
2 類的聲明
3 類實現的注釋(/*……*/)如果有必要的話 該注釋應包含任何有關整個類的資訊,而這些資訊又不適合作為類文檔注釋。
4 類的(靜態)變數 首先是類的公開變數,隨後是保護變數,再後是包一層級的變數(沒有存取修飾詞,access modifier),最後是私人變數。
5 執行個體變數 首先是公用層級的,隨後是保護層級的,再後是包一層級的(沒有存取修飾詞),最後是私人層級的。
6 構造器
7 方法 這些方法應該按功能,而非範圍或存取權限,分組。例如,一個私人的類方法可以置於兩個公有的執行個體方法之間。其目的是為了更便於閱讀和理解代碼

3.4 縮排排版

4個空格常被作為縮排排版的一個單位。縮排的確切解釋並未詳細指定(空格 vs. 定位字元)。一個定位字元等於8個空格(而非4個),所以在某些編輯器中,需要特別指定一下定位字元的長度為4(UltraEdit),而在某些編輯器中,會將定位字元轉換為空白格

3.5 行長度

盡量避免一行的長度超過80個字元,因為很多終端和工具不能很好處理之。

3.6 換行

當一個運算式無法容納在一行內時,可以依據如下一般規則斷開之:

- 在一個逗號後面斷開
- 在一個操作符前面斷開
- 寧可選擇較進階別(higher-level)的斷開,而非較低層級(lower-level)的斷開
- 新的一行應該與上一行同一層級運算式的開頭處對齊
- 如果以上規則導致你的代碼混亂或者使你的代碼都堆擠在右邊,那就代之以縮排8個空格。

以下是斷開方法調用的一些例子:


someMethod(longExpression1, longExpression2, longExpression3,
             longExpression4, longExpression5);

$var = someMethod1(longExpression1,
                 someMethod2(longExpression2,
                              longExpression3));

以下是兩個斷開算術運算式的例子。前者更好,因為斷開處位於括號運算式的外邊,這是個較進階別的斷開。


$longName1 = $longName2 * ($longName3 + $longName4 - $longName5)
            + 4 * $longname6; //使用這種縮排方式

$longName1 = $longName2 * ($longName3 + $longName4
                   - $longName5) + 4 * $longname6; //避免這種

以下是兩個縮排方法聲明的例子。前者是常規情形。後者若使用常規的縮排方式將會使第二行和第三行移得很靠右,所以代之以縮排8個空格


//傳統的縮排方式
function someMethod($anArg, $anotherArg, $yetAnotherArg,
          $andStillAnother) {
...
}

//利用8個連續空格避免過渡的縮排
function horkingLongMethodName($anArg,
     $anotherArg, $yetAnotherArg,
     $andStillAnother) {
...
}

if語句的換行通常使用8個空格的規則,因為常規縮排(4個空格)會使語句體看起來比較費勁。比如:


//不要使用這種縮排方式
if ((condition1 && condition2)
  || (condition3 && condition4)
  ||!(condition5 && condition6)) { //錯誤的換行方式,沒有進行縮排
  doSomethingAboutIt(); //條件與此句對齊,造成閱讀程式時很可能漏過此句
}

//應該使用這種縮排方式
if ((condition1 && condition2)
    || (condition3 && condition4)
    ||!(condition5 && condition6)) {
  doSomethingAboutIt();
}

//或者這樣的縮排方式也可以
if ((condition1 && condition2) || (condition3 && condition4)
        ||!(condition5 && condition6)) {
  doSomethingAboutIt();
}

這裡有三種可行的方法用於處理三元運算運算式:

$alpha = (aLongBooleanExpression) ? beta : gamma;

$alpha = (aLongBooleanExpression) ? beta
                 : gamma;

$alpha = (aLongBooleanExpression)
    ? beta
    : gamma;



相關文章

聯繫我們

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