effective go阅读笔记

包名

其名称应该简洁明了而易于理解。按照惯例, 包应当以小写的单个单词来命名,且不应使用下划线或驼峰记法。
err 的命名就是出于简短考虑的,因为任何使用该包的人都会键入该名称。它并不需要在所有源码中保持唯一,即便在少数发生冲突的情况下, 也可为导入的包选择一个别名来局部使用。 无论如何,通过文件名来判定使用的包,都是不会产生混淆的。

另一个约定就是包名应为其源码目录的基本名称。在 src/pkg/encoding/base64 中的包应作为 "encoding/base64" 导入,其包名应为 base64, 而非 encoding_base64 或 encodingBase64。

例如,bufio 包中的缓存读取器类型叫做 Reader 而非 BufReader,因为用户将它看做 bufio.Reader,这是个清楚而简洁的名称。 此外,由于被导入的项总是通过它们的包名来确定,因此 bufio.Reader 不会与 io.Reader 发生冲突。
同样,用于创建 ring.Ring 的新实例的函数(这就是Go中的构造函数)一般会称之为 NewRing,但由于 Ring 是该包所导出的唯一类型,且该包也叫 ring,因此它可以只叫做 New,它跟在包的后面,就像 ring.New。
另一个简短的例子是 once.Do,once.Do(setup) 表述足够清晰, 使用 once.DoOrWaitUntilDone(setup) 完全就是画蛇添足。
长命名并不会使其更具可读性。一份有用的说明文档通常比额外的长名更有价值。

你可能感兴趣的:(golang)