1、参考
2、目录结构
2.1 pkg
存放本项目中,能够被外部应用直接调用的代码库git
即通常/pkg中存放的是公有库github
2.2 internal
私有代码存放在internal中,golang
2.3 src
不建议使用 src存放项目,web
(1) go语言的项目默认都会在 $GOPATH/src目录下,若是当前的项目中还有src目录,则有django
$GOPATH/src/github.com/test/project/src/code.gosegmentfault
这样的目录,看起来很是奇怪api
(2) src目录是大多数 Java使用者的开发经验架构
2.4 平铺
(1) 对于框架或者库,将代码平铺在项目根目录下很正常,
例如:
若是没有平铺,想要引入一个使用 pkg目录结构的框架时候,须要使用
github.com/test/project/pkg/somepkg
若是将全部代码平铺到根目录,则引用路径为
github.com/test/project/pkg/somepkg
(2) 对于一个go服务中,使用平铺方式不是很是合适
2.5 cmd
存放全部的可执行文件
该目录下的每个子目录,都包含了可执行文件
不该该将过多的代码放入,cmd中
2.6 api
存放当前项目,对外提供的全部api接口文件
api目录下可能包含有二级目录,例如:
api/protobuf-spec
api/thrift-spec
api/http-spec
2.7 Makefile
目录 scripts中存放一些项目运行的脚本
经过 Makefile 调用这些脚本
3、模块拆分
3.1 按层拆分(java等)
web框架的常见架构方式为 MVC 分层,即将服务中的不一样组件分为
Model, View, Control 三层
下面是一个常见的python django项目结构
按层拆分的好处是:
(1) 强调了按层划分职责
(2) 扁平的命名空间
(3) 单体服务的场景
3.2 按职责拆分(go项目)
divide-by-responsibility