项目地址: https://github.com/golang-standards/project-layout
最近有开一个 Go 项目的需求,虽然 DDD 已经很久了,但看到项目的结构组织方式其实有点无从上手。关于这个,有一个 YouTube 演讲视频几年前也提到了: https://www.youtube.com/watch?v=oL6JBUk6tj0 。
视频里包含了一个简单的例子和一些解释。看起来咋挺有道理的,但这种抽象和缺乏明确边界的概念性描述是无法说清楚 DDD 本身是什么的。DDD 里面提到不同的领域有“非常明确的边界”,但我觉得它有点自相矛盾,因为它本身的描述就缺乏“非常明确的边界”。与可以量化 /或有明确流程图的 MVC 不同,DDD 有多个概念,稍微深入想想就发现很多概念上的重叠。把 DDD 看成 “思维模式” 是没错,但动手之前需要的还是 “标准化”。
为此我上网寻找了一遍 Go Web 项目的 DDD boilerplate,基本上也是各有各的风格。与上面项目近 2 万个的 stars 相比,实际发现的项目完全不在一个数量级。所以看得有点无所适从。因为即使我自己按照自己的理解构建了项目,我也无法保证能向我的同事解释清楚。不知道各位是如何组织自己的项目的?
1
baiyi 2020-12-14 15:20:55 +08:00 1
Bilibili 的 Go 语言工程化实践 https://time.geekbang.org/dailylesson/detail/100040852
有关于项目组织布局的方式,但没有提到 DDD,可以参考一下 |
2
crclz 2020-12-14 15:21:33 +08:00
先学会 C#/java 怎么 DDD,你就知道 go 怎么 DDD 了 https://github.com/dotnet-architecture/eShopOnContainers
|