创建Go工程化项目布局详解_第1页
创建Go工程化项目布局详解_第2页
创建Go工程化项目布局详解_第3页
创建Go工程化项目布局详解_第4页
创建Go工程化项目布局详解_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第创建Go工程化项目布局详解目录正文/cmd/internal/pkg/docs,/example,/pkg,/third_parth,/tools基础库项目布局kit包应该具备的特点应用程序项目布局/api/configs/test不应该包含/src目录/internal/biz/data/service布局示意图数据流向

正文

如果你尝试学习Go,或者你正在为自己建立一个Poc或者一个玩具项目,这个项目布局是没有啥必要的,从一些简单的事情开始(一个main文件绰绰有余)。当有更多的人参与这个项目的时候,你讲需要更多的结构,包括需要一个tookit来方便生成项目的模板,尽可能大家统一的工程目录布局

本文章围绕/golang-stan进行说明

/cmd

本项目的主干。每个应用程序的目录名应该与你想要的可执行文件的名称相匹配(例如:/cmd/myapp)

不要在这个项目中放置太多的代码,如果你认为代码导入并在其他项目中使用,那么他应该位于/pkg目录中,如果代码不是可重用的,或者你不希望其他人重用他,请将该代码放到/internal目录中。

/internal

不希望对外进行共享的代码,internal目录中也可以放置一些子包结构,已做到更加细化的切分,如:

|--internal

||--demo

||--biz

||--data

||--service

/pkg

外部应用程序可以使用的代码库,(例如:/pkg/publiclib)其他项目会导入这些代码库,所以放入到该目录下的代码要三思~注意:/internal目录是确保私有包不可导入的私有方法,因为他是由Go在编译时强制执行的。/pkg仍然是一种更好的方式,可以显示的表示目录中的代码对于其他人来说是安全使用的好方法。

/pkg目录内可以参考GO标准库的组织形式,按照功能分类,/internal/pkg一般用于项目内的,跨多个应用的公共共享代码,但是其作用域仅在单个工程内。

|--pkg

||--cache

|||--memcache

|||--redis

||--conf

||--dsn

||--env

||--flagvar

||--paladin

/docs,/example,/pkg,/third_parth,/tools

这些跟上文说的/pkg和/internal都同属根目录下的目录结构

/docs放置一些项目说明文档/example放置一些项目的使用示例/thrid_parth三方的一些依赖文件,如:idl文件/tools放置一些项目的脚手架工具,代码生成工具等

基础库项目布局

每个公司都应该为不同的微服务建立一个统一的kit基础包工具集。基础库tookit为一个独立的项目,公司级建议只有一个,按照功能来拆分会带来不少的管理工作,因此建议并整合

kit包应该具备的特点

统一标准库方式布局高度抽象支持插件

例如下面的布局

|--cache

||--memcache

||--test

||--redis

||--test

|--conf

||--dsn

||--env

||--flagvar

||--paladin

||--apollo

||--internal

||--mockserver

|--container

||--group

||--pool

||--queue

||--aqm

|--database

||--hbase

||--sql

||--tidb

|--echo

||--types

|--log

||--internal

||--core

||--filewriter

应用程序项目布局

/api

API协议定义目录,toprotobuf文件以及生成go的文件,我们通常把api文档定义在proto文件中描述

/configs

配置文件模板或者默认配置

/test

额外的外部测试应用程序和测试数据,你可以随时根据需求构造测试目录,对于较大的项目,有一个数据子目录是有意义的,例如你可以使用/test/testdata(如果你需要忽略目录中的内容)请注意,Go还会以.或者_开头的目录或者文件,因此在如何命名测试数据目录方便,有着很大的灵活性。

不应该包含/src目录

有些Go项目确实有src目录,这是因为开发人员通常有Java的开发背景。

/internal

/biz

业务逻辑的组装层,类似DDD中的domain,

/data

业务数据访问,包含cache和db等封装,实现了biz的repo接口,我们可能会把data和dao混合在一起,data偏重业务的含义,他所做的是将领域对象重新拿出来,我们去掉了DDD的infra层,

/service

实现了api定义的服务层,类似DDD的applocation层,处理DTO到biz领域实体的转换,(DTO-DO)同事协同个类biz交互,但是不应该处理复杂逻辑

布局示意图

|--api

|--configs

|

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论