Go 组织围棋项目-套餐还是其他?
我已经阅读并在谷歌上搜索了“golang软件包”,但我还没有找到关于组织中等规模应用程序的最佳实践的任何建议 如果我的应用程序在概念上有几个不同的部分,可能是10^3-10^4 LOC,并且我不打算创建可重用的库用于其他应用程序,那么所有的源代码文件都应该是Go 组织围棋项目-套餐还是其他?,go,package,packages,organization,code-organization,Go,Package,Packages,Organization,Code Organization,我已经阅读并在谷歌上搜索了“golang软件包”,但我还没有找到关于组织中等规模应用程序的最佳实践的任何建议 如果我的应用程序在概念上有几个不同的部分,可能是10^3-10^4 LOC,并且我不打算创建可重用的库用于其他应用程序,那么所有的源代码文件都应该是package main 为了澄清 例如,假设我的程序将有以下主要块: 管理一组持久存储的数据的东西 允许通常的创建、读取、更新和删除操作 允许人查看存储数据的东西 在这两者之间协调/调停的事物 使用SOAP定期从web服务获取数据更
package main
为了澄清 例如,假设我的程序将有以下主要块:
- 管理一组持久存储的数据的东西
- 允许通常的创建、读取、更新和删除操作
- 允许人查看存储数据的东西
- 在这两者之间协调/调停的事物
- 使用SOAP定期从web服务获取数据更新的东西
- 创建
$GOPATH/src/myprogramname
- 在里面放一些
和main.go
func main(){…}
- 创建一些子目录,如
$GOPATH/src/myprogramname/model
$GOPATH/src/myprogramname/view
$GOPATH/src/myprogramname/control
$GOPATH/src/myprogramname/fetch
- 让这些子目录中的.go文件以
等开头,其中包名称始终与子目录名称匹配包获取
- 我的
可能将main.go
导入(…“获取”、“模型”、“视图”、“控件”)
- 随着
的增长,根据用途将其拆分为其他大小合理的.go文件李>main.go
- 构建程序,包括*.go在上面的包子目录中
cd $GOPATH/src/myprogramname go build
简言之,我不想要一条10000线的主管道,一切都在里面。将代码组织到文件、子目录和,根据众所周知的结构化编程和/或OO原则,与正常概念划分相对应的包和任何其他组织单元?您可以根据功能的封装级别将项目分解为若干层,即,在单独的包中具有低级功能,在主包中具有逻辑功能。(您可以从类似MVC的体系结构中获得灵感) 因为我们没有关于您的代码的任何细节,所以很难看出哪种体系结构最适合您
但最终,您的选择将基于代码简单性/可重用性的平衡。围棋中的一般“最佳实践”似乎是让每个包提供一种类型或一种服务。标准库中的大多数包公开一个或两个类型,以及用于处理这些类型的函数。有些,如net/http和testing,提供了一种服务——不是“微服务”意义上的某项本身可执行的服务,而是一组与特定活动相关的功能。这是一个很好的一般性建议,但我正在寻找更多的细节,我将更新我的问题以澄清。没有细节,我无法做更多,我将检查您的更新,并为我的答案添加建议:)