考虑更少,更大的包
发布者:admin 发表于:417天前 阅读数:786 评论:0

对于从其他语言过渡到 Go 语言的程序员来说,我倾向于在代码审查中提到的一件事是他们会过度使用包。

Go 语言没有提供有关可见性的详细方法; Java有 publicprotectedprivate 以及隐式 default 的访问修饰符。 没有 C++friend 类概念。

在 Go 语言中,我们只有两个访问修饰符,publicprivate,由标识符的第一个字母的大小写表示。 如果标识符是公共的,则其名称以大写字母开头,该标识符可用于任何其他 Go 语言包的引用。

注意:你可能会听到人们说 exported 与 not exported, 跟 public 和 private 是同义词。

鉴于包的符号的访问有限控件,Go 程序员应遵循哪些实践来避免创建过于复杂的包层次结构?

贴士:除 cmd/ 和 internal/ 之外的每个包都应包含一些源代码。

我的建议是选择更少,更大的包。 你应该做的是不创建新的程序包。 这将导致太多类型被公开,为你的包创建一个宽而浅的API。

以下部分将更为详细地探讨这一建议。

贴士:来自 Java?如果您来自 Java 或 C#,请考虑这一经验法则 – Java 包相当于单个 .go 源文件。 - Go 语言包相当于整个 Maven 模块或 .NET 程序集。