相信很多人纠结项目如何组织结构时,看到过 GitHub 上的这个项目:<https://github.com/golang-standards/project-layout>,到目前为止,这个项目已经 22.8k+ Star 了。
然而,前些天,Go Team Leader Russ Cox 实在看不下去了,在这个项目提了一个 issue:[this is not a standard Go project layout](https://github.com/golang-standards/project-layout/issues/117)。
![project-layout.png](https://static.studygolang.com/210429/0c8d3d2aff4189a8ba159707d4cf8567.png)
我想应该有不少人遇到类似 rsc 提到的这个困惑:你的项目没有使用标准的 Go 布局。。。而这个标准的布局,指的就是这项目。
rsc 表示,虽然这个项目在 README 中明确说明了,这个不是官方的。不过无论从项目名称(golang-standards/project-layout)还是里面提到的一些建议,都很容易让人以为是标准。
其实我认为这个项目本身没有什么问题(虽然名字可能确实不太合适),毕竟它是总结了 GitHub 上比较有名的开源项目的出来的。
rsc 提到 pkg 包的问题,但现在很多有名的开源项目,都这么用了。
既然现在社区出现了这个,而且很多人以为是“标准”,那 Go Team 是不是该反思下,为什么会出现这样的情况?Go 官方是不是应该考虑给项目布局一些建议呢。你自己没有,别人有,你又觉得不合适,这是不是不讲道理呢?!别人有,你觉得不好,出一个更好的,我觉得才是正道!!
大家觉得呢?对此,你怎么看?
### 更新
rsc 回复了「标准」:
1. 在根目录下放LICENSE文件
2. 在根目录放一个go.mod文件
3. 在你认为合适的地方(根目录或者整理到文件夹内),放置 Go 代码。
<https://github.com/golang-standards/project-layout/issues/117#issuecomment-828503689>
这标准,跟没有差不多?!
更多评论