您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 后端开发设计规范-精华
后端开发设计规范--精华一、设计原则1、模块化开发,模块与模块之间尽量独立,职责分明,需要遵循以下规范:a、原则上不可在本模块直接实现非本模块的功能(也方便日后做系统拆分),除非有足够的理由(比如为了性能考虑实现跨模块关联查询);b、模块与模块之间只能通过Service调用,而且输入参数只包含有用字段(方便开发人员的阅读与流程及逻辑的梳理)2、纵向分层设计,从上到下可分为实体类、领域驱动模型、ServiceVO、Service、接口输入与输出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、定义为基本数据包装类的属性,必须设默认值,比如Double、Integer、Long、Short等等包装类,版本号字段除外;7、日期字段定义为java.lang.Date而不能定义成字符串8、对于选项用途的字段,必须定义其对应的枚举类,而且这个枚举类应该放在该类内部9、对于非字符串字段,不可定义为字符串10、实体类应定义Action11、继承自DDObjectVO输入VO:无供外部或本模块1、均使用自动生成getter/setter等代码com.fh.module.模块名.vo.逻辑名Param输出VOcom.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.逻辑名Controllercom.ztl.module.模块名.controller.逻辑名Controller1、提供Web接口;2、提供前端路由;3、Web接口调用的权限控制1、不做具体业务逻辑的实现;2、实现方式为调用本模块服务层、仓库层以及领域模型层;3、接口的输入输出类可以是基本数值类型;也可以是基于实体类的VO;4、接口文档的依赖类可以是基于实体类的VO,也可以是本Controller的嵌入静态类控制器内部类com.fh.module.模块名.controller.逻辑名Controller$逻辑名Vocom.ztl.module.模块名.controller.逻辑名Controller$逻辑名Vo1、接口方法的输入参数2、也可以供接口文档生成用1、均使用lombok的@Data自动生成getter/setter,以提高代码简洁度;2、可以供接口文档生成用;亦可以作为接口方法的输入参数;接口文档的生成依赖类com.fh.module.模块名.controller.逻辑名Controller$依赖类逻辑名Vocom.ztl.module.模块名.controller.逻辑名Controller$依赖类逻辑名Vo仅供接口文档生成用1、均使用lombok的@Data自动生成getter/setter,以提高代码简洁度;2、供接口文档生成用;实际执行使用实体类VO;3、其属性不写注释时,默认使用原实体类控制器内部VO类com.fh.module.模块名.controller.逻辑名Controller$逻辑名Vocom.ztl.module.模块名.controller.逻辑名Controller$依赖类逻辑名Vo1、接口方法的输入参数2、也可以供接口文档生成用1、均使用lombok的@Data自动生成getter/setter,以提高代码简洁度;2、可以供接口文档生成用;亦可以作为接口方法的输入参数;3、可以转换成实体类VO后再调用领域模型或仓库服务及本模块服务4、如果可以,尽量用实体类
本文标题:后端开发设计规范-精华
链接地址:https://www.777doc.com/doc-7512639 .html