分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 教程案例

php写代码应该遵循的规则

发布时间:2023-09-06 01:56责任编辑:白小东关键词:暂无标签

引用于:https://zhuanlan.zhihu.com/p/33451652,感谢summer大神

1,使用有意义的且可读的变量名(一定要明确变量名的意义)
eg:$currentDate

2,使用可搜索的名称
eg:在类中定义常量

3,避免嵌套太深和提前返回
错误:

 1 function isShopOpen($day): bool 2 { 3 if ($day) { 4 if (is_string($day)) { 5 $day = strtolower($day); 6 if ($day === ‘friday‘) { 7 return true; 8 } elseif ($day === ‘saturday‘) { 9 return true;10 } elseif ($day === ‘sunday‘) {11 return true;12 } else {13 return false;14 }15 } else {16 return false;17 }18 } else {19 return false;20 }21 }

正确:(错误的可以抛出异常)

function isShopOpen(string $day): bool{if (empty($day)) {return false;}$openingDays = [‘friday‘, ‘saturday‘, ‘sunday‘];return in_array(strtolower($day), $openingDays, true);}


4,一定要定义好函数变量的类型(不要条件判断)
eg:public function send(string $email,string $userName){}

5,条件判断使用全等符==

6,函数参数应该少于两个参数,实在超过三个的,封装一个对象
eg:public function send(User $user){}

7,函数应该只做一件事

8,函数的名称要说清楚它做什么

9,不要用boolean类型的变量作为函数的参数
不友好的:

1 function createFile(string $name, bool $temp = false): void2 {3 if ($temp) {4 touch(‘./temp/‘.$name);5 } else {6 touch($name);7 }8 }


友好的:

1 function createFile(string $name): void2 {3 touch($name);4 }5 6 function createTempFile(string $name): void7 {8 touch(‘./temp/‘.$name);9 }

注:这样也符合函数只干一件事

10,尽量不要定义全局函数

11,封装条件语句
不友好的:

if ($article->state === ‘published‘) {
???// ...
}
友好的:

if ($article->isPublished()) {
???// ...
}

12,避免用反义条件判断
eg:if (!isDOMNodeNotPresent($node))

13,移除无用代码

14,使用protected和private描述类中的变量

15,职责单一原则
eg:正如 Clean Code 书中所述,"修改一个类应该只为一个理由"。人们总是容易去用一堆方法 "塞满" 一个类,就好像当我们坐飞机上只能携带一个行李箱时,会把所有的东西都塞到这个箱子里。这样做带来的后果是:从逻辑上讲,这样的类不是高内聚的,并且留下了很多以后去修改它的理由。
将你需要修改类的次数降低到最小很重要,这是因为,当类中有很多方法时,修改某一处,你很难知晓在整个代码库中有哪些依赖于此的模块会被影响。

比较糟:

 1 class UserSettings 2 { 3 private $user; 4 ?5 public function __construct(User $user) 6 { 7 $this->user = $user; 8 } 9 10 public function changeSettings(array $settings): void11 {12 if ($this->verifyCredentials()) {13 // ...14 }15 }16 17 private function verifyCredentials(): bool18 {19 // ...20 }21 }

棒棒哒:

 1 class UserAuth ?2 { 3 private $user; 4 ?5 public function __construct(User $user) 6 { 7 $this->user = $user; 8 } 9 10 public function verifyCredentials(): bool11 {12 // ...13 }14 }15 16 class UserSettings 17 {18 private $user;19 private $auth;20 21 public function __construct(User $user) 22 {23 $this->user = $user;24 $this->auth = new UserAuth($user);25 }26 27 public function changeSettings(array $settings): void28 {29 if ($this->auth->verifyCredentials()) {30 // ...31 }32 }33 }

16,避免写重复代码

php写代码应该遵循的规则

原文地址:https://www.cnblogs.com/lvchengda/p/9089217.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved