不加入不需要的上下文
如果你的類別名稱或物件名稱有具體的意義,請不要重複該變數的名稱。
差:
<?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 = 'Foo';$config->body = 'Bar';$config->buttonText = 'Baz';$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, 'email'); } function activeClients($clients) { return array_filter($clients, 'isClientActive'); } 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('Amount greater than available balance.'); } $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中文網其他相關文章!