当前位置:首页 > PHP教程 > php应用 > 列表

PHP代码编写规范

发布:smiling 来源: PHP粉丝网  添加日期:2022-06-11 08:23:27 浏览: 评论:0 

不添加不需要的上下文

如果你的类名或对象名称有具体的含义,请不要重复该变量的名称。

差:

  1. <?php class Car{ 
  2.  
  3.     public $carMake; 
  4.  
  5.     public $carModel; 
  6.  
  7.     public $carColor; 
  8.  
  9.     //... 
  10.  
  11.     } 

好:

  1. <?php class Car{ 
  2.  
  3.     public $make; 
  4.  
  5.     public $model; 
  6.  
  7.     public $color; 
  8.  
  9.     //... 
  10.  
  11.     } 

函数参数数量(理想情况是 2 个以下)

限制函数参数的数量是非常重要的,因为它让函数更容易测试,参数超过三个的话,你必须用每个单独的参数测试大量不同的情况。

无参数是理想的情况。一个或两个参数是可以的,但应该避免三个。通常,如果你有两个以上的参数,那么你的函数试图完成太多的功能,若不是,大多数时候,较高级的对象就足以作为参数(译者注:比如数组、对象)。

差:

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

好:

  1. <?php class MenuConfig { 
  2.  
  3.     public $title; 
  4.  
  5.     public $body; 
  6.  
  7.     public $buttonText; 
  8.  
  9.     public $cancellable = false;}$config = new MenuConfig();$config->title = 'Foo';$config->body = 'Bar';$config->buttonText = 'Baz';$config->cancellable = true;function createMenu(MenuConfig $config) { 
  10.  
  11.     // ...} 

一个函数应该只完成一件事

这是软件工程中最重要的规则。当函数做的事多于一件事情时,他们更难编写和测试。 当你可以将函数隔离成一个动作时,可以轻松重构,代码也将更易读。

差:

  1. <?phpfunction emailClients($clients) { 
  2.  
  3.     foreach ($clients as $client) { 
  4.  
  5.         $clientRecord = $db->find($client); 
  6.  
  7.         if ($clientRecord->isActive()) { 
  8.  
  9.             email($client); 
  10.  
  11.         } 
  12.  
  13.     }} 

好:

  1. function emailClients($clients) { 
  2.  
  3.     $activeClients = activeClients($clients); 
  4.  
  5.     array_walk($activeClients, 'email'); 
  6.  
  7. } 
  8.  
  9. function activeClients($clients) { 
  10.  
  11.     return array_filter($clients, 'isClientActive'); 
  12.  
  13. } 
  14.  
  15. function isClientActive($client) { 
  16.  
  17.     $clientRecord = $db->find($client); 
  18.  
  19.     return $clientRecord->isActive(); 
  20.  
  21. } 

使用 get 和 set 方法

在 PHP 中,可以为方法设置 public、protected 和 private 关键字,可以控制对象上的属性可见性。这是面向对象的设计原则中的开放/封闭原则的一部分。

差:

  1. class BankAccount 
  2.  
  3. { 
  4.  
  5.     public $balance = 1000; 
  6.  
  7. } 
  8.  
  9. $bankAccount = new BankAccount(); 
  10.  
  11. // Buy shoes... 
  12.  
  13. $bankAccount->balance -= 100; 

好:

  1. class BankAccount 
  2.  
  3. { 
  4.  
  5.     private $balance; 
  6.  
  7.     public function __construct($balance = 1000) 
  8.  
  9.     { 
  10.  
  11.       $this->balance = $balance; 
  12.  
  13.     } 
  14.  
  15.     public function withdrawBalance($amount) 
  16.  
  17.     { 
  18.  
  19.         if ($amount > $this->balance) { 
  20.  
  21.             throw new \Exception('Amount greater than available balance.'); 
  22.  
  23.         } 
  24.  
  25.         $this->balance -= $amount; 
  26.  
  27.     } 
  28.  
  29.     public function depositBalance($amount) 
  30.  
  31.     { 
  32.  
  33.         $this->balance += $amount; 
  34.  
  35.     } 
  36.  
  37.     public function getBalance() 
  38.  
  39.     { 
  40.  
  41.         return $this->balance; 
  42.  
  43.     } 
  44.  
  45. } 
  46.  
  47. $bankAccount = new BankAccount(); 
  48.  
  49. // Buy shoes... 
  50.  
  51. $bankAccount->withdrawBalance($shoesPrice); 
  52.  
  53. // Get balance 
  54.  
  55. $balance = $bankAccount->getBalance();

Tags: PHP代码编写规范

分享到: