我已阅读Go Tour和谷歌搜索“golang packages”,但我还没有找到任何关于在 Go 中组织中等规模应用程序的最佳实践的建议。
如果我有一个应用程序在概念上有几个不同的部分,可能是 10^3-10^4 LOC,并且我不打算创建可重用的库供其他应用程序使用,所有源代码文件都应该是 包主要
?
澄清...
例如,假设我的程序将包含以下主要 block :
- 管理一堆持久存储数据的东西
- 允许通常的创建、读取、更新、删除操作
- 允许人们查看存储数据的东西
- 在这些之间协调/调解的东西
- 使用 SOAP 从网络服务定期获取数据更新的东西。
所以这将是 MVC 加上数据 getter 。
环顾四周人们的所作所为,我现在怀疑我应该
- 创建
$GOPATH/src/myprogramname
- 在里面放一些
main.go
和package main
和func main() { ... }
。 - 创建一些子目录,例如
$GOPATH/src/myprogramname/model
$GOPATH/src/myprogramname/view
$GOPATH/src/myprogramname/control
$GOPATH/src/myprogramname/fetch
- 让这些子目录中的 .go 文件以
package fetch
等开头。包名称始终与子目录名称匹配。 - 我的
main.go
可能会import ( ... "fetch"; "model"; "view"; "control")
- 随着
main.go
的增长,将其拆分为其他大小合理的 .go 文件,这些文件根据用途命名。 构建程序,包括*.go在上述包子目录下
cd $GOPATH/src/myprogramname go build
这就是我需要做的吗?这是组织事物的正确惯用的 Go 方式吗?还有更多我应该知道或想到的吗?是否有一些我忽略的规范网页或 PDF 应该阅读以找出这些东西?
简而言之,我不想要包含所有内容的 10,000 行 main.go。根据众所周知的结构化编程和/或 OO 原则,将代码组织成文件、子目录、包和与正常概念划分相对应的任何其他组织单元的惯用 Go 原则是什么?
最佳答案
您可以根据函数的封装级别将您的项目分解为多个层,即在单独的包中具有低级函数,而在主包中具有逻辑函数。 (你可以从类似 MVC 的架构中激发自己的灵感) 由于我们没有关于您的代码的任何详细信息,因此很难看出哪种架构最适合。
但最终您的选择将基于代码简单性/可重用性的平衡。
关于go - 组织 Go 程序 - 包或其他东西?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42694108/