Go 组织围棋项目-套餐还是其他?

Go 组织围棋项目-套餐还是其他?,go,package,packages,organization,code-organization,Go,Package,Packages,Organization,Code Organization,我已经阅读并在谷歌上搜索了“golang软件包”,但我还没有找到关于组织中等规模应用程序的最佳实践的任何建议 如果我的应用程序在概念上有几个不同的部分,可能是10^3-10^4 LOC,并且我不打算创建可重用的库用于其他应用程序,那么所有的源代码文件都应该是package main 为了澄清 例如,假设我的程序将有以下主要块: 管理一组持久存储的数据的东西 允许通常的创建、读取、更新和删除操作 允许人查看存储数据的东西 在这两者之间协调/调停的事物 使用SOAP定期从web服务获取数据更

我已经阅读并在谷歌上搜索了“golang软件包”,但我还没有找到关于组织中等规模应用程序的最佳实践的任何建议

如果我的应用程序在概念上有几个不同的部分,可能是10^3-10^4 LOC,并且我不打算创建可重用的库用于其他应用程序,那么所有的源代码文件都应该是
package main


为了澄清

例如,假设我的程序将有以下主要块:

  • 管理一组持久存储的数据的东西
    • 允许通常的创建、读取、更新和删除操作
  • 允许人查看存储数据的东西
  • 在这两者之间协调/调停的事物
  • 使用SOAP定期从web服务获取数据更新的东西
这将是MVC加上一个数据获取程序

从人们的行为来看,我现在怀疑我应该

  • 创建
    $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
    可能将
    导入(…“获取”、“模型”、“视图”、“控件”)
  • 随着
    main.go
    的增长,根据用途将其拆分为其他大小合理的.go文件
  • 构建程序,包括*.go在上面的包子目录中

     cd $GOPATH/src/myprogramname
     go build
    
这就是我需要做的吗?这是组织事物的惯用方式吗?还有更多我应该知道或想到的吗?是否有一些我忽略了的规范网页或PDF,应该阅读才能找到这些东西


简言之,我不想要一条10000线的主管道,一切都在里面。将代码组织到文件、子目录和,根据众所周知的结构化编程和/或OO原则,与正常概念划分相对应的包和任何其他组织单元?

您可以根据功能的封装级别将项目分解为若干层,即,在单独的包中具有低级功能,在主包中具有逻辑功能。(您可以从类似MVC的体系结构中获得灵感) 因为我们没有关于您的代码的任何细节,所以很难看出哪种体系结构最适合您


但最终,您的选择将基于代码简单性/可重用性的平衡。

围棋中的一般“最佳实践”似乎是让每个包提供一种类型或一种服务。标准库中的大多数包公开一个或两个类型,以及用于处理这些类型的函数。有些,如net/http和testing,提供了一种服务——不是“微服务”意义上的某项本身可执行的服务,而是一组与特定活动相关的功能。

这是一个很好的一般性建议,但我正在寻找更多的细节,我将更新我的问题以澄清。没有细节,我无法做更多,我将检查您的更新,并为我的答案添加建议:)