Effective Go – Names 命名规则

Effective Go – The Go Programming Language (google.cn)

和其他语言一样,Go语言中命名规范也是十分重要的。它甚至会影响语义;例如某个名称(字段、方法)在包外是否可见,取决于第一个字母是否大小写。因此我们有必要花一点时间来讨论Go语言中的命名约定。

包名

当我们引入一个包后,这个包名就会成为内容的访问器。

image.png
引入bytes包后,我们就可以引用bytes.Buffer{}。包应该有一个恰当的名称,其名称应该简短、简明、易于理解。按照惯例,包名应该小写的单个单词来命名,且不应该使用下划线或驼峰记法。Err的命名就是处于简短考虑。包名就是导入时所需的唯一默认名称, 它并不需要在所有源码中保持唯一,即便在少数发生冲突的情况下, 也可为导入的包选择一个别名来局部使用。 无论如何,通过文件名来判定使用的包,都是不会产生混淆的。

package names

import (
   "bytes"
   bytes2 "bytes"
   "fmt"
)

func newBuffer() {
   buffer := bytes.Buffer{}
   buffer2 := bytes2.Buffer{}

   buffer.Write([]byte("123"))

   fmt.Println(buffer)
   fmt.Println(buffer2)
}

func Demo() {
   compare := bytes.Compare([]byte("123"), []byte("123"))
   fmt.Println(compare)
}
复制代码

另一个约定,包名应为其源码目录的基本名称。例如src/encoding/base64中导入包名为encoding/base64,其包名为base64

image.png

import "encoding/base64"
func encoding() {
   base64.NewEncoding("")
}
复制代码

包的导入者可通过包名来引用其内容,因此包中的可导出名称可以此来避免冲突。(请勿使用import .,它可以简化必须在被测试包外运行的测试, 除此之外应尽量避免使用。)

image.png

另一个简短的例子是once.Doonce.Do(setup) 表述足够清晰, 使用 once.DoOrWaitUntilDone(setup) 完全就是画蛇添足。 长命名并不会使其更具可读性。一份有用的说明文档通常比额外的长名更有价值。

Getters

Go不提供getter和setter。你应该自己提供getter和setter方法。若你命名owner小写字段,不支持外部访问。命名为Owner可支持外部访问。首字母的大小写规定取分方法和字段是否可支持外部访问提供了便利。
image.png

inteface names 接口命名

按照管理,只包含一个方法的接口应当在该方法名称上加-er后缀。如RederWriterFormatterCloseNotifier

image.png

MixedCaps

Go中约定是驼峰命名法MixedCapsmixedCaps而不是下划线来分割多个单词命名。

免责声明:务必仔细阅读

  • 本站为个人博客,博客所转载的一切破解、path、补丁、注册机和注册信息及软件等资源文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。

  • 本站为非盈利性站点,打赏作为用户喜欢本站捐赠打赏功能,本站不贩卖软件等资源,所有内容不作为商业行为。

  • 本博客的文章中涉及的任何解锁和解密分析脚本,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断.

  • 本博客的任何内容,未经许可禁止任何公众号、自媒体进行任何形式的转载、发布。

  • 博客对任何脚本资源教程问题概不负责,包括但不限于由任何脚本资源教程错误导致的任何损失或损害.

  • 间接使用相关资源或者参照文章的任何用户,包括但不限于建立VPS或在某些行为违反国家/地区法律或相关法规的情况下进行传播, 博客对于由此引起的任何隐私泄漏或其他后果概不负责.

  • 请勿将博客的任何内容用于商业或非法目的,否则后果自负.

  • 如果任何单位或个人认为该博客的任何内容可能涉嫌侵犯其权利,则应及时通知并提供身份证明,所有权证明至admin@proyy.com.我们将在收到认证文件后删除相关内容.

  • 任何以任何方式查看此博客的任何内容的人或直接或间接使用该博客的任何内容的使用者都应仔细阅读此声明。博客保留随时更改或补充此免责声明的权利。一旦使用并复制了博客的任何内容,则视为您已接受此免责声明.

您必须在下载后的24小时内从计算机或手机中完全删除以上内容.

您使用或者复制了本博客的任何内容,则视为已接受此声明,请仔细阅读


更多福利请关注一一网络微信公众号或者小程序

一一网络微信公众号
打个小广告,宝塔服务器面板,我用的也是,很方便,重点是免费的也能用,没钱太难了,穷鬼一个,一键全能部署及管理,送你3188元礼包,点我领取https://www.bt.cn/?invite_code=MV9kY3ZwbXo=


一一网络 » Effective Go – Names 命名规则

发表评论

发表评论

一一网络-提供最优质的文章集合

立即查看 了解详情