蓝色速度Java Web后端团队统一规范(不断完善)

前言

  • 最近在融入一个新团队,所以在团队组建过程中一些繁琐的事情我开始系统思考并做整理,由此就有这一篇文章。
  • 后续还会发布团队建设的一些个人整理,以及团队项目开发过程的一些整理。
  • 希望对你有所帮助。

代码编写时(Java 代码规范)

  • 必须看过(大部分都是合理):阿里巴巴Java开发手册(终极版).pdf

  • 业务逻辑复杂,必须在业务编写过程注释。
    1、业务逻辑需编写在services层,并且注释,controller层杜绝出现业务逻辑。
    2、涉及多个单元业务操作时,需要加上事务控制。

  • VO、DTO、PO选择场景(POJO 是这类的统称)
    1、VO类,微服务apis项目定义为xxxParam、xxxData,微服务admin项目定义为xxxRequest,xxxResponse.
    2、DTO类,定义为xxxBo。
    3、PO类,定义为xxxEntity。
    4、微服务apis项目,服务层杜绝出现VO类,VO类和DTO类需在controller层转换。
    5、微服务admin项目,引入apis项目的VO类,杜绝直接返回给前端。
    6、返回参数,杜绝直接返回DTO类和PO类。

  • 微服务调用
    1、微服务apis项目:
    在api项目定义调用接口xxxApi,impl项目controller实现接口。
    api子项目代码如下: 在这里插入图片描述

public interface HorsemanAuditRecordApi {
    @RequestMapping(path = "/apisPlatform/horsemanAuditRecords/save")
    @ApiMethod(description = "骑手审核记录写入")
    BaseApiResponse saveHorsemanAuditRecord( SaveHorsemanAuditRecordParam saveHorsemanAuditRecordParam);
    }

impl子项目代码如下:
在这里插入图片描述

@RestController
public class HorsemanAuditRecordController extends AbstracSpringCloudController implements HorsemanAuditRecordApi {
@Override
	public BaseApiResponse saveHorsemanAuditRecord(@RequestBody @Validated SaveHorsemanAuditRecordParam 
	      //TODO
	}

2、微服务web项目:
在xxxCloudService中继承引入接口。代码如下
在这里插入图片描述

@FeignClient(value = "apis-platform-impl")
public interface HorsemanAuditRecordsCloudService extends HorsemanAuditRecordApi {
}
  • 异常的处理原则
    框架已经封装了异常捕获,需要注意如下:
    1、微服务apis项目:
    controller层需继承AbstracSpringCloudController类。
    如果有自定义的异常类,需要在子项目api中定义,方便第三方服务引用。
    2、微服务admin项目:
    controller层需继承AbstractApiController。

  • 日志输出,额外要有输出 JSON 格式的版本
    在一些调试重要地方的方法入参、API 返回结果上要有 logger输出,方便开发初期做调试,杜绝system.out.println()打印语句出现。

前后端对接

  • 对接步骤
    1、后端开发人员在yapi定义接口,包括接口url、接口入参、接口出参。
    2、前端开发人员在yapi确认接口,主要确认是否缺少接口定义、是否缺少接口出入参数。
    3、前后端开发人员对照yapi正确的接口各自进行开发。
    4、开发完成后,再进行联调,如果接口有变动,需要先更改yapi相应接口。
  • 前端请求方式
    查询:get请求
    新增、修改:post请求

数据库规范

  • INNODB 存储引擎
    区分大小写配置:lower_case_table_names
  • 必要字段,表ID,创建人ID,创建时间、更新人ID、更新时间、备注。
  • 表字符集使用 UTF8MB4
  • 所有表和列都需要添加注释
  • 数据库字段命名,统一用含有下划线的方式,一定不要有单独的单词:
    比如 name,title,要改为:sys_name,nav_title,避免出现有些保留字或是不好统一的问题。
  • 索引的数量要控制:
    单张表中索引数量最好不超过 5 个
    单个索引中的字段数最好不超过 5 个

命名规范

  • 类名
    类名往往用不同的后缀表达额外的意思,如下表:
后缀名说明例子
Entity数据库表持久化对象HorsemanInfosEntity
Param微服务apis项目接口入参类FindHorsemanParam
Data微服务apis项目接口出参类FindHorsemansData
Request微服务web项目接口入参类FindHorsemanRequest
Response微服务web项目接口出参类FindHorsemansResponse
Controller控制类ShopInfosRestController
Service表明这个类是个服务类(一般用于bo层接口),里面包含了给其他类提同业务服务的方法PaymentOrderService
Impl这个类是一个实现类,而不是接口HorsemanAuditRecordsService
Inter这个类是一个接口LifeCycleInter
Dao这个类封装了数据访问方法PaymentOrderDao
Inter这个类是一个接口LifeCycleInter
Action直接处理页面请求,管理页面逻辑了类UpdateOrderListAction
Listener响应某种事件的类PaymentSuccessListener
Event这个类是一个接口LifeCycleInter
Inter这个类代表了某种事件PaymentSuccessEvent
Factory生成某种对象工厂的类PaymentOrderFactory
Adapter用来连接某种以前不被支持的对象的类DatabaseLogAdapter
Job某种按时间运行的任务PaymentOrderCancelJob
Wrapper这是一个包装类,为了给某个类提供没有的能力SelectableOrderListWrapper
  • 方法名
    方法名往往用不同的前缀表达额外的意思,如下表:
前缀名说明例子
find查找对象findNewSupplier()
list查找集合listNewSupplier()
create/add/save创建createOrder()
delete/remove删除deleteOrder()
init/initialize初始化initOrderInfo()
destroy销毁destroyObjectPool()
open打开openConnection()
close关闭closeConnection()
read读取readUserName()
write写入writeUserName()
prepare准备prepareOrderList()
copy复制copyCustomerList()
modity/update/edit修改modifyActualTotalAmount()
calculate数值计算calculateCommission()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值