php项目代码规范->如何写出规范而易于理解的项目代码

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

时间: 2024-10-13 22:24:54

php项目代码规范->如何写出规范而易于理解的项目代码的相关文章

代码示例:一些简单技巧优化JavaScript编译器工作详解,让你写出高性能运行的更快JavaScript代码

告诉你一些简单的技巧来优化JavaScript编译器工作,从而让你的JavaScript代码运行的更快.尤其是在你游戏中发现帧率下降或是当垃圾回收器有大量的工作要完成的时候. 单一同态: 当你定义了一个两个参数的函数,编译器会接受你的定义,如果函数参数的类型.个数或者返回值的类型改变编译器的工作会变得艰难.通常情况下,单一同态的数据结构和个数相同的参数会让你的程序会更好的工作. function example(a, b) { // 期望a,b都为数值类型 console.log(++a * +

Discuz论坛写出的php加密解密处理类(代码+使用方法)

PHP加密解密也是常有的事,最近在弄相关的东西,发现discuz论坛里的PHP加密解密处理类代码,感觉挺不错,在用的时候,要参考Discuz论坛的passport相关函数,后面我会附上使用方法,先把类代码帖上来: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 <?php /*

如何写出规范的JavaScript代码

作为一名开发人员(WEB前端JavaScript开发),不规范的开发不仅使日后代码维护变的困难,同时也不利于团队的合作,通常还会带来代码安全以及执行效率上的问题.本人在开发工作中就曾与不按规范来开发的同事合作过,与他合作就不能用"愉快"来形容了.现在本人撰写此文的目的除了与大家分享一点点经验外,更多的是希望对未来的合作伙伴能够起到一定的借鉴作用.当然,如果我说的有不科学的地方还希望各路前辈多多指教.下面分条目列出各种规范要求,这些要求都是针对同事编码毛病提出来的,好些行业约定的其它规范

写出规范化的高可读性的函数代码注释

对代码接触的越多,我越来越想让写出的代码更加perfect,更加高可读性,其中各个函数的代码注释就是非常关键的一步: /** * 函数功能 * @name 名字 * @abstract 申明变量/类/方法 * @access 指明这个变量.类.函数/方法的存取权限 * @author 函数作者的名字和邮箱地址 * @category 组织packages * @copyright 指明版权信息 * @const 指明常量 * @deprecate 指明不推荐或者是废弃的信息MyEclipse编码

如何写出规范的代码? 做一名追求极致的软件工程师!

从那几个维度:  1.可维护性 2.可读性 3.健壮性

代码规范、如何写出好代码

代码规范.如何写出好代码 作为一个程序员,肯定希望能写出一手好代码,看起来赏心悦目,又易于理解.既方便日后自己回来翻阅一眼就能明白代码在干什么,又能让接手的人很快上手,看到精妙的地方,不由自主地发出由衷的感叹,悄无声息地改变别人不好的习惯. 如何才能写出好代码呢?在一次讲座上,我听了一位编程大神的看法,在这里分享给大家. 好的代码应该至少具备下面这6个特点: 使用空行来分割逻辑 使用注释和花括号 不用的代码和引用删除 不要用中文拼音做变量名 可用,清晰优雅,高效 多写代码,多思考 使用空行来分割

如何写出优雅的CSS代码 ?(转)

对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于团队合作和后期的维护:而有的混乱,虽然表达出了最终的效果,然而却晦涩难懂,显然团队成员在读这样的代码时就显得无从下手,更不利于后期的维护了.那么如何写出优雅的代码呢?下面我将以一个很小的项目就以下几个方面简单的表达一下自己的看法,如有不妥,望批评指正. 如何整理一个项目. 如何写出清晰易懂的HTML代码. 如何写出优雅的css代

【知识点】如何写出优雅的CSS代码 ?

对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来清晰易懂,代码具有可拓展性,这样的代码有利于团队合作和后期的维护:而有的混乱,虽然表达出了最终的效果,然而却晦涩难懂,显然团队成员在读这样的代码时就显得无从下手,更不利于后期的维护了.那么如何写出优雅的代码呢?下面我将以一个很小的项目就以下几个方面简单的表达一下自己的看法,如有不妥,望批评指正. 如何整理一个项目. 如何写出清晰易懂的HTML代码. 如何写出优雅的css代

如何写出优雅的css代码?

如何写出优雅的css代码? 对于同样的项目或者是一个网页,尽管最终每个前端开发工程师都可以实现相同的效果,但是他们所写的代码一定是不同的.有的优雅,看起来井井有条,清晰易懂,这样的代码有利于团队合作和后期的维护:而有的混乱,虽然表达出了最终的效果,然而却晦涩难懂,显然团队成员在读这样的代码时就显得无从下手,更不利于后期的维护了.那么如何写出优雅的代码呢?下面我将以一个很小的项目就以下几个方面简单的表达一下自己的看法,如有不妥,望批评指正. 如何整理一个项目. 如何写出清晰易懂的HTML代码. 如