Go项目组织实践

2020-07-08 00:00:00 代码 组织 项目 方式 存放

前言

为Go项目设计一个合适的目录结构是一个令人头痛的事情,也是初学者入坑不可避免的一段弯路,一个好的项目结构不仅会使项目组织看起来更为清晰,解耦功能代码,而且也能带来开发效率的提升,尤其是在多人协作的项目中,可以降低许多时间成本。但是有没有一种完美的项目结构能适应多种不同的场景呢,答案应该是没有的,在不同的场景下选择为合适的组织方式才是更好的选择,尽管如此,大部分情况下各种项目组织方式仍然有优劣之分,在参考了网上不少关于项目组合的分享以及自己的一些亲身实践,带着思考写下自己的一些见解,欢迎讨论。

关于包组织

假如现在开始编写一个Go的微服务,步要怎么编写代码呢?估计有不少人会开局一个main.go接着一把梭,这种方法在mini项目或者刚开始的时候比较高效,但随着项目功能的增长,文件内容会变得越来越臃肿,这时候就要开始思考怎么去拆分功能到其他地方了,在Standard Package Layout这篇文章中总结了以下几种常见的项目组织方式:

1.Monolithic package

简而言之这种方式是把所有的文件通通扔到一个包下面,这样解决了循环依赖的问题,但是当代码行数开始变多时,这种方式维护起来将会非常困难。

.
├── dao.go
├── repository.go
├── service.go
├── router.go
├── model.go
└── main.go

相关文章