我今年(2022 年)开始真正使用 Golang 进行编程,我立即做的事情就是寻找参考资料,以了解改进项目结构的最佳方式。这篇文章只是讨论同一主题的许多其他文章之一,也许这就是我决定写它的原因。
首先,golang 在处理文件夹/包的方式上已经完全不同了,而且,为了改进,它有一个非常固执己见的本质,许多官方文档告诉我们做某事的“goway”方式是什么(完整)不是我接触的),但是,在您组织文件和文件夹的方式中,并没有真正的方向,因此每个人都对这部分给出了自己对世界的解释。
我将这篇文章分为 3 个参考文献,然后展示这些参考文献的混合在项目中的效果。
一个有效的复杂系统总是从一个有效的简单系统演变而来。
-- 加尔定律
对于小型应用程序,项目结构必须简单。
“社区”对 Go 生态系统中常见的一组历史和新兴设计布局模式进行了调查。这项调查中有很多很酷的东西,但引起我注意的是 /cmd 和 /internal 文件夹。
该项目的主要应用。
每个应用程序的目录名称必须与您想要的可执行文件的名称匹配(例如/cmd/myapp)。
私人应用程序和库代码。您不希望其他人将这些代码导入到他们的应用程序或库中。请注意,此布局模式是由 Go 编译器本身强加的。
更好地将“细节”与真正提供价值的东西分开的架构。
对于一个简单的应用程序,我尝试保持简单,但是,当范围变大一点时,我尝试在什么是“核心”/域和什么是细节/基础设施之间做出细微的区分。
请注意,在 cmd 中,我没有 tuttipet 文件夹,正如参考项目所建议的那样。起初我尝试使用建议的模式,但由于这个 API 已经推出了命令行界面和 terraform 提供程序,我决定保留这种方式。
快速放大核心。我在这里尝试简单化,不创建文件夹。我只与外部世界保持 1 个接触点(main.go),任何概括的都有自己的文件,任何不概括的都保留在其上下文中,简单。
使用 tuttipet.New(简短、简洁且令人回味),“脏”层可以与用例交互(我发现用例这个词比交互器更容易理解)
快速放大细节。以下是该领域取得成功的简单工具。
我在 Golang 提供的道路上仍然很弱,仍在尝试弄清楚用它可以做什么,但是,尽管我不喜欢 Go 做某些事情的方式,但它已被证明是相当好的简单而强大。
总结,尽可能保持简单,如果变得太复杂......我会回到绘图板。
https://dev.to/booscaaa/implementando-clean-architecture-com-golang-4n0a
https://github.com/golang-standards/project-layout
https://blog.boot.dev/golang/golang-project-struct/
https://github.com/bnkamalesh/goapp
https://www.wolfe.id.au/2020/03/10/how-do-i-struct-my-go-project/
https://blog.logrocket.com/flat-struct-vs-layered-architecture-structuring-your-go-app/
https://developer20.com/how-to-struct-go-code/
https://dev.to/jinxankit/go-project-struct-and-guidelines-4ccm
https://github.com/bxcodec/go-clean-arch
https://golangexample.com/example-go-clean-architecture-folder-pattern/
https://www.calhoun.io/flat-application-struct/
https://go.dev/doc/ effective_go#names
https://go.dev/blog/package-names
原帖:https://medium.com/@espigah/go-layout-do-projeto-18aacce8089d
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3