首頁  >  文章  >  後端開發  >  PHP程式碼編寫規範

PHP程式碼編寫規範

Guanhui
Guanhui轉載
2020-05-02 09:51:352475瀏覽

不加入不需要的上下文

如果你的類別名稱或物件名稱有具體的意義,請不要重複該變數的名稱。

差:

<?php class Car{
    public $carMake;
    public $carModel;
    public $carColor;
    //...
    }

好:

<?php class Car{
    public $make;
    public $model;
    public $color;
    //...
    }

函數參數數量(理想情況是2 個以下)

限制函數參數的數量是非常重要的,因為它讓函數更容易測試,參數超過三個的話,你必須用每個單獨的參數測試大量不同的情況。

無參數是理想的情況。一個或兩個參數是可以的,但應該避免三個。通常,如果你有兩個以上的參數,那麼你的函數試圖完成太多的功能,若不是,大多數時候,較高級的物件就足以作為參數(譯者註:例如陣列、物件)。

差:

<?php function createMenu($title, $body, $buttonText, $cancellable) {
    // ...}

好:

<?php class MenuConfig {
    public $title;
    public $body;
    public $buttonText;
    public $cancellable = false;}$config = new MenuConfig();$config->title = &#39;Foo&#39;;$config->body = &#39;Bar&#39;;$config->buttonText = &#39;Baz&#39;;$config->cancellable = true;function createMenu(MenuConfig $config) {
    // ...}

一個函數應該只完成一件事

這是軟體工程中最重要的規則。當函數做的事多於一件事情時,他們更難寫和測試。當你可以將函數隔離成一個動作時,可以輕鬆重構,程式碼也將更易讀。

差:

<?phpfunction emailClients($clients) {
    foreach ($clients as $client) {
        $clientRecord = $db->find($client);
        if ($clientRecord->isActive()) {
            email($client);
        }
    }}

好:

function emailClients($clients) {
    $activeClients = activeClients($clients);
    array_walk($activeClients, &#39;email&#39;);
}
function activeClients($clients) {
    return array_filter($clients, &#39;isClientActive&#39;);
}
function isClientActive($client) {
    $clientRecord = $db->find($client);
    return $clientRecord->isActive();
}

使用get 和set 方法

在PHP 中,可以設定public、protected 和private 關鍵字,可以控制物件上的屬性可見性。這是物件導向的設計原則中的開放/封閉原則的一部分。

差:

class BankAccount
{
    public $balance = 1000;
}
$bankAccount = new BankAccount();
// Buy shoes...
$bankAccount->balance -= 100;

好:

class BankAccount
{
    private $balance;
    public function __construct($balance = 1000)
    {
      $this->balance = $balance;
    }
    public function withdrawBalance($amount)
    {
        if ($amount > $this->balance) {
            throw new \Exception(&#39;Amount greater than available balance.&#39;);
        }
        $this->balance -= $amount;
    }
    public function depositBalance($amount)
    {
        $this->balance += $amount;
    }
    public function getBalance()
    {
        return $this->balance;
    }
}
$bankAccount = new BankAccount();
// Buy shoes...
$bankAccount->withdrawBalance($shoesPrice);
// Get balance
$balance = $bankAccount->getBalance();

推薦教學:《PHP教學

以上是PHP程式碼編寫規範的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:zhihu.com。如有侵權,請聯絡admin@php.cn刪除

相關文章

看更多