2019年5月17日10:50:12
前序:
很多时候,PHP代码风格过于自由,导致一个项目有N多种写法风格,有些人为了自己认为的技术"高",经常写一些奇奇怪怪的写法比如:
例子1,一个很简单的功能,给你写N个回调函数,导致代码可读性基本为零。,
例子2,比如 if else 不写{} 吧代码块包起来,不是所有的人用的ide都可以识别这种写法,当然php的引擎解析不会有问题
例子3,比如为了代码方便 经常写匿名函数,一层套一层,为了写法更简洁,代码无法复用,代码可读性很低
以上的说道的功能倒是一些语法糖,不是所有开发语言都有,特有写法,不通用,如果只会一种后端代码语言,可能对这块很难理解
PSR
参看PSR的编写规范,如果完全按照PSR来编写代码,确实不错,但是,很难要求所有人的达到这个标准
中文翻译版 http://psr.phphub.org/
已经通过的标准有1,2,3,4,6,7,这些标准都是一些不错的标准,目前我遵循其中的一部分,为什么是一部分而不是全部,因为不能要求项目组所有人都强制这种代码规范
一些参考规则
https://www.w3cschool.cn/phpkfbmgf/apedj4.html
IDE使用
其实不限制具体使用什么ide,但是如果有可能就统一最好,不然有些代码写法在不同的ide,代码提示和代码追踪是比较麻烦的,比如使用容器和回调函数的时候,只能靠自己查找源代码
命名规范
建议统一使用驼峰法,变量名也是,尽量使用英文可读翻译的单词做方法名,特别是对于不喜欢写很多注释的同学
文件名称和类型名一致,不要在一个文件写多个类,方便代码阅读和管理
比如:
PurchaseInStorageService.php 代码内容: namespace App\Service; use App\Service\BaseService; class PurchaseInStorageService extends BaseService {
public $a = 0;
public static $b = ‘string‘;
/**
*
* @param int $shopId
* @param int $purchaseOrderId
* @return type
*/
public static function inStorageList(int $shopId, int $purchaseOrderId) {
}
}
/**
*/
ide会自动吧当前方法的参数作为注释显示出来,方便你编写参数注释
这是一种比较常见写法,其实更规范和合理的代码是这样,参考代码分层
代码分层
代码分层的好处就是代码逻辑复用,当需要做一些逻辑聚集操作的时候,可以直接做,不需要在吧需要做的功能全部重写一次,直接调用以前对应的服务层
一般代码分层
控制器层Controller
服务接口层 ServiceInterface
服务实现层 Service
模型层 Models
和控制器平级的api层
api版本控制层
计划任务层
比如现在symfony也是可以做类似java类似的基于组件的最小化开发,类似spring boot开发的意思
还有一些通用的但是在PHP用不是太多的层
错误处理层,相当于php的错误Handel注册处理函数,自定义错误的处理
aop层,根据规范的控制器,或者服务层,增加一些额外附加的功能
过滤器层,对请求的过滤或者控制
这些有一些在php出现的比较少,但是都是一些编程思想的实现,通用语各种语言中
为什么要出现接口层,又出现接口实现层,这个其实有多方面考虑,比如多态,集成多种支付的时候,实现支付接口直接去写业务逻辑,规范代码,需要根据不同的类型的支付,统一代码调用
比如
有些人说,如果要分细一点,就分得更细,这个主要看系统设计要求和招的开发人员的水平,分层越多,理解起来越难,写的代码就越多,个人建议适当的分层即可。
原文地址:https://www.cnblogs.com/zx-admin/p/10880150.html