- 5.1. 考虑更少,更大的包
5.1. 考虑更少,更大的包
对于从其他语言过渡到 Go 语言的程序员来说,我倾向于在代码审查中提到的一件事是他们会过度使用包。
Go 语言没有提供有关可见性的详细方法; Java有 public、protected、private 以及隐式 default 的访问修饰符。 没有 C++ 的 friend 类概念。
在 Go 语言中,我们只有两个访问修饰符,public 和 private,由标识符的第一个字母的大小写表示。 如果标识符是公共的,则其名称以大写字母开头,该标识符可用于任何其他 Go 语言包的引用。
注意:你可能会听到人们说
exported与not exported, 跟public和private是同义词。
鉴于包的符号的访问有限控件,Go 程序员应遵循哪些实践来避免创建过于复杂的包层次结构?
贴士:除
cmd/和internal/之外的每个包都应包含一些源代码。
我的建议是选择更少,更大的包。 你应该做的是不创建新的程序包。 这将导致太多类型被公开,为你的包创建一个宽而浅的API。
以下部分将更为详细地探讨这一建议。
贴士:来自
Java?如果您来自Java或C#,请考虑这一经验法则 —Java包相当于单个.go源文件。 - Go 语言包相当于整个Maven模块或.NET程序集。
