繁体   English   中英

将 go 文件放在模块路径上是一个好习惯吗?

[英]it is a good practice to put go file on the module path?

我发现一些项目将 go 文件放在模块路径上。 例如:

我想知道将 go 文件放在模块路径上是否是一个好习惯。

这主要是基于意见的。 main.go放入存储库根目录通常会出现在没有很多事情发生的小程序中。 当主包开始获取大量文件时,一些人所做的是将紧密耦合的代码放入一个名为cmd的子文件夹中,并将理论上可以被其他项目重用的代码放入名为pkg的子文件夹中。 不过,此时pkg的代码也可能拥有自己的存储库。

将主包放入子文件夹,同时在存储库根目录中还有另一个包,可能有多种原因:

  • 它可能只是示例代码。
  • 可能是根文件夹包用于以特定方式调用从main构建的二进制文件; 即一个分层的文件夹/包结构,其中在项目执行期间往往会被调用的代码被放置在文件夹树的更下方。
  • 它以某种方式在历史上以某种方式演变,并且不需要紧急改变。
  • 从字面上看,您可以或无法想到的任何特质。

不过,根据经验,命名事物是个好主意,这样人们就不必指定导入别名来导入包。 例如,不要将包foo放在名为bar的文件夹中。 以一种可以复制到浏览器地址栏以直接访问其存储库概述的方式命名模块也是我看到人们欢迎的一种做法。

Go 中的包导入路径与其他语言中的命名空间有很多相似之处。 随着时间的推移,无论好坏,开发人员和语言都开始使用这种机制不仅仅是为了避免词法名称冲突。 开发人员通常会尝试实现代码所在的逻辑、分层文件夹结构。 语言广泛使用它来限制方法和字段的可见性。 正如您可能猜到的那样,接下来是一场不适合 Stackoverflow 的基于意见的激烈讨论。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM