项目开发总结
经历很多的项目,在项目开发的迭代过程中,越来越觉得<"规范">是非常非常重要的;可能一个项目组的不同项目都是多种风格,因此,规范化,统一化是非常非常重要的,也可以减少沟通成本、提高效率
一、项目结构
①.exercise-provider:前端,第三方系统交互,消息,task入口
②.exercise-biz:业务组装处理层,将多个业务进行组装,整合
- 对biz层的要求是只要进入biz层,通过注释,以及业务的处理流程,就知道这个方法干了啥
- 不要处理逻辑,只是用做业务的组装,流程处理,业务的处理去service完成
- 记录对biz层方法的监控,这个方法的qps,p99等指标
- 对controller传过来的参数进行校验,参数不符合条件,直接返回页面
③.exercise-service:业务处理层,此层级可以包含remoteService,adapter,converter
- 此层级要达到的要求是处理不同的业务,但是与第三方的交互,以及数据库的交互,与其他业务的交互需要十分清晰
④.exercise-dao:数据库交互层,此层级主要是对数据库的增,删,改,查
- mapper.xml,mapper,po都可以使用 mybatis-generator.xml自动生成,但是需要修改生成之后的mapper文件,主要修改类似 deleteByPrimaryKey(),insertSelective(),selectByPrimaryKey() 等的方法名,因为这样的语意不清,然后把不使用的方法删除掉
- 注意添加@mapper注解和注释
- mapper.xml中使用<where></where>标签,不要出现1=1
- mapper.xml的namespace与mapper的全类名一一对应
- 新加的标签与 <Base_Column_List> 格式保持一致
- 新加的增,删,改,查;入参,返回值都不要忘记
⑤.exercise-model:所有的req,res,vo,po,bo,enums,query等等
⑥.exercise-common:此层级包含utils,常量等等
二、层级之间的调用关系
三、IDEA代码规范组件以及配置
1、安装 Alibaba Java Coding Guidelines
2、自动删除 import 无用的package【https://blog.****.net/csndhu/article/details/90956570】
3、自动展开 import java.utils.* 类型的导包【https://blog.****.net/csndhu/article/details/90956570】
4、安装 sonar 扫描代码写的是否规范
5、安装mybatis的插件
四、编程规范
五、代码质量
1、Api接口,消息,前端参数校验
外围系统是不可信任的,他们随时可能做任何的变更,这些变更都会影响我们自己的系统,因此,需要对外围系统做校验。
对外围系统校验有以下几点
- 对api、消息体的结构进行判断
- 对数据是否为空进行校验,对查询出的数据正确性与否进行校验(根据id去查询数据,都是返回多条数据)
- 对接口进行异常校验
2、增,删,改,查数据库数据校验
- 查询接口返回的数据(有些接口返回是Object,有些返回的是 List<Object>),对返回的数据是否为空需要进行校验
- 插入或更新数据的时候,一定要考虑并发情况。因为我们是2台机器,所以并发发生的时候,会出现数据问题