大家好我是小彭,今天和大家聊一聊关于后端项目模块分层设计,好的项目模块分层能使开发更规范,无论是新人还是老人都能更轻松的看懂业务代码、修复相关bug,进而提交团队开发效率,糟糕的分层设计和不规范的开发,会使项目越来越臃肿,难以维护。本文将分别介绍PHP和Java语言框架常见的模块分层,再来聊聊业务开发需要注意的地方。
一、 后端项目
1.1 PHP项目常见模块
1.1.1 调用流程
常见的调用流程为以下两种:
1.Controller-》Model-》
2.Controller-》Service-》Model-》
1.2 Java项目常见模块
1.2.1 调用流程:
控制器-》服务层接口-》服务层接口实现类(业务逻辑写在这里)-》Mapper接口(定义增删改查)-》Mapper接口实现类(具体的SQL)-》返回类型为指定数据传输对象DTO(实体,定义的数据表字段,定义多少,返回多少字段数据)
比如guns开源项目:
二、现有项目痛点
1.代码写在一个控制器里、一个方法中完成所有逻辑
2.业务逻辑代码没有复用
2.没有统一的参数验证
2.功能没有按照模块拆分、没有分层
3.数据库操作在各个控制器层
4.部分表没有对应的模型文件
三、现有项目痛点案例
3.1 公司项目
3.1.2 用户积分功能
积分异常bug场景
假如现在有一个积分数据异常的bug需要我来修复,恰巧我不是负责该功能的人,我应该怎么从项目中快速找到该bug?
第一步:找到请假数据表-》user_integral
第二步:在Model中找UserIntegral文件,(但是找不到)
第三步:全局搜索user_integral表,并且找添加数据的操作
第四步:修复bug,复制修复bug的代码到粘贴到其他方法中
坏处和痛点
1.数据表没有模型,新人或者不是负责该功能开发的人,不容易找到对应的代码段
2.数据表增删改查操作分布在控制器中,需要走完整个流程才能找到数据添加或者修改的地方
3.核心业务功能没有复用,在Admin和Api模块后续会复制出大量相同的代码
四、优化方案
4.1 优化前提
1.符合PHP快速开发的特点,不必像Java一样那么多调用层次
2.以业务需求开发为主,易于开发人员接受和编写代码
3.不能为了优化而过多设计,反倒会起反作用
4.2 优化方案
4.2.1 优化建议
1.【代码写在一个控制器里、一个方法中完成所有逻辑】=》根据业务将代码写到合适到地方,如业务逻辑写在service中
2.【业务逻辑代码没有复用】=》将业务逻辑写到service服务层
2.【没有统一的参数验证】=》增加validete目录,参数验证统一放在该目录下
3.【功能没有按照模块拆分、没有目录分层】=》拆分功能、增加相应的目录
4.【数据库操作在各个控制器层】=》数据库操作放在和数据表命名一致的模型中
5.【部分表没有对应的模型文件】=》根据数据表增加模型文件
4.2.2 调用流程
validate参数验证
controller控制器=》service服务层=》 util 工具目录
model模型层、增删改查
大致流程图
五、结束语
不同的项目有不同的模块分层设计,也要根据实际情况进行调整,但好的开发规范一定要早点落实。关于项目模块设计就聊到这里,我们下次再见。