4. 包的设计
Write shy code - modules that don’t reveal anything unnecessary to other modules and that don’t rely on other modules’ implementations.编写谨慎的代码 - 不向其他模块透露任何不必要的模块,并且不依赖于其他模块的实现。 — Dave Thomas
每个 Go 语言的包实际上都是它一个小小的 Go 语言程序。 正如函数或方法的实现对调用者而言并不重要一样,包的公共API-其函数、方法以及类型的实现对于调用者来说也并不重要。
一个好的 Go 语言包应该具有低程度的源码级耦合,这样,随着项目的增长,对一个包的更改不会跨代码库级联。 这些世界末日的重构严格限制了代码库的变化率以及在该代码库中工作的成员的生产率。
在本节中,我们将讨论如何设计包,包括包的名称,命名类型以及编写方法和函数的技巧。