- 项目采用领域驱动模型的充血模型开发,业务实现都在internal目录下,业务分层为server、service、biz、data、config。server层为服务注册层,注册系统的http、grpc服务等;service层为接口层,处理外部请求,调用内部实现,然后返回数据。biz层为业务逻辑层,根据service层传入的输入,根据业务目的,调用data层获取数据进行业务处理。data层用于和数据库以及第三方库进行交互,不处理业务逻辑只负责拿数据。
- service层需要将请求数据转换成biz层的struct,再调用biz层的方法,将转换好的biz层struct示例传入。biz层方法入参为基本数据类型或者biz的对象,出参也为基本数据类型或者biz对象。
- data层方法返回的数据需要转换成biz层定义的struct。
- data使用接口+实现的方式设计,data层的struct需要实现在biz.go中定义的接口
- 项目使用DDD的思想,将biz层按照领域进行划分,data层按照实体进行划分,data层每一个对象只处理自己所属实体对象的数据,尽量不使用多表连接查询,将代码可读性的优先级提高。
- 接口统一在api目录中使用protocolbuff定义,通过编译protoc文件生成对应的golang代码,proto接口的名称使用动词,api路径中的名词使用复数,接口参数的结构用首字母大写驼峰,接口参数的实例使用首字母小写驼峰。
- 删除使用逻辑删除。
- 涉及多张表或者一张表的多次读写操作的业务逻辑,需要使用事务保证ACID
- 依赖注入使用wire实现
- 多个方法中的类似实现要将其抽象成一个方法;一个方法中的多个逻辑处理将它们封装成方法,一个方法内的业务处理应该简单直观。
golang代码规范之业务开发规范
最新推荐文章于 2024-02-07 11:53:55 发布