后端开发设计规范-精华

时间:2023-12-15 07:14:39 阅读: 最新文章 文档下载
说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。
后端开发设计规范--精华



一、设计原则

1、模块化开发,模块与模块之间尽量独立,职责分明,需要遵循以下规范:

a、原则上不可在本模块直接实现非本模块的功能(也方便日后做系统拆分)除非有足够的理由(比如为了性能考虑实现跨模块关联查询)

b、模块与模块之间只能通过Service调用,而且输入参数只包含有用字段(方便开发人员的阅读与流程及逻辑的梳理)

2、纵向分层设计,从上到下可分为实体类、领域驱动模型、Service VOService、接口输入与输出VO、接口,需要遵循以下原则:

a、上层不可依赖下层;

b、下层可以依赖上层,而且尽量利用上层资源重用代码,减少代码量,提高开发效率

3、为了提供代码的可读性以及方便追溯,代码注释应遵循以下原则

a、所有类必须作功能注释,并注明作者;

b、所有属性以及方法必须作功能注释,方法内的参数必须作注释;

二、模块设计规范 设计项

实体类

后台目录

com.fh.entity.模块.entity.表名Entity

前台目录

功能描述

承载数据库数据交互的载体

设计原则

1、所有字段对应的属性,必须作注释; 2、对于存在外键字段的属性,必须定义一对一的关联实体类属性; 3、均使用自动生成getter/setter等代码方式,以提高代码开发效率及可维护性;

4、对于逻辑为布尔的字段、应该定义Boolean/boolean而不是Integer/int 5、对应浮动型属性,应定义为double运算时使用MathUtils公用方法运算、以避免精度问题;

6、定义为基本数据包装类的属性,必须设默认值,比如DoubleIntegerLongShort等等包装类,版本号字段除外;

7、日期字段定义为java.lang.Date而不能定义成字符串

8、对于选项用途的字段,必须定义其对应的枚举类,而且这个枚举类应该放在该类内部

9、对于非字符串字段,不可定义为字符串

10、实体类应定义Action 11、继承自DDObject

VO

输入VO

供外部或本模块1均使用自动生成getter/setter等代码


com.fh.module.模块.vo.逻辑名Param 输出VO

com.fh.module.模块.vo.逻辑名Vo

调用时传输数据

方式,以提高代码开发效率及可维护性;

1、尽量少定义VO,如Controller方法的输入和输出,尽量用实体类,而用PropertiesBuilder定义只使用到的属性,亦方便生成接口文档

领域模型基类

com.fh.module.模块.model.逻辑名ModelBase

1、共用的验证逻辑

2、共用的逻辑运算逻辑 3、获取领域模

1、方法的命名必须规范; 2、不实现除功能描述外的逻辑

领域模型Model

com.fh.module.模块.model.逻辑名Model角色名

用于本模块的业务逻辑计算

1、不可继承自实体类;

2、应该把本模块继承自实体类的VO做为其成员变量;

3、传入参数为本模块继承自实体类的VO或基本类型参数;

4、只做数据运算,不做数据存储功能

Service务层

com.fh.module.模块.service.逻辑名Service

用于本模块的业务逻辑处理

1、原则上只处理流程,细节运算交给领域模型计算

接口层控制器Controller

com.fh.module.模块.controller.逻辑名Controller

com.ztl.module.块名.controller.辑名Controller

1、提供Web口;

2、提供前端路由;

3Web接口调用的权限控制

1、不做具体业务逻辑的实现; 2、实现方式为调用本模块服务层、仓库层以及领域模型层;

3、接口的输入输出类可以是基本数值类型;也可以是基于实体类的VO 4、接口文档的依赖类可以是基于实体类的VO也可以是本Controller的嵌入静态类



控制器内部类

com.fh.module.模块.controller.逻辑名Controller$逻辑名Vo

com.ztl.module.块名.controller.辑名Controller$辑名Vo

1、接口方法的输入参数 2、也可以供接口文档生成用 仅供接口文档生成用

1、均使用lombok@Data自动生成getter/setter,以提高代码简洁度; 2、可以供接口文档生成用;亦可以作为接口方法的输入参数;

1、均使用lombok@Data自动生成getter/setter,以提高代码简洁度; 2、供接口文档生成用;实际执行使用实体类VO

3、其属性不写注释时,默认使用原实体类



接口文档的生成依赖类

com.fh.module.模块.controller.逻辑名Controller$依赖类逻辑Vo

com.ztl.module.块名.controller.辑名Controller$赖类逻辑名Vo



控制器内VO

com.fh.module.模块.controller.逻辑名Controller$逻辑名Vo

com.ztl.module.块名.controller.辑名Controller$赖类逻辑名Vo

1、接口方法的输入参数 2、也可以供接口文档生成用

1、均使用lombok@Data自动生成getter/setter,以提高代码简洁度; 2、可以供接口文档生成用;亦可以作为接口方法的输入参数;

3可以转换成实体类VO后再调用领域




本文来源:https://www.wddqw.com/doc/40509ab8b8f3f90f76c66137ee06eff9aef849ec.html