Go语言命名规范

一、变量命名规范

    变量命名一般采用驼峰式,当遇到特有名词(缩写或简称,如DNS)的时候,特有名词根据是否私有全部大写或小写。例子:

var apiClient
var URLString

二、常量命名规范

    同变量规则,力求语义表达完整清楚,不要嫌名字长。
    如果模块复杂,为避免混淆,可按功能统一定义在package下的一个文件中。

const todayNews = "Hello"
 
// 如果超过了一个常量应该用括号的方法来组织
 
const (
  systemName = "What"
  sysVal = "dasdsada"
)

三、接口命名规范

    单个函数的接口名以 er 为后缀

 

type Reader interface {
    Read(p []byte) (n int, err error)
}
两个函数的接口名综合两个函数名,如:

type WriteFlusher interface {
    Write([]byte) (int, error)
    Flush() error
}
三个以上函数的接口名类似于结构体名,如:

type Car interface {
    Start() 
    Stop()
    Drive()
}

 

四、结构体命名规范

    结构体名应该是名词或名词短语,如Account,Book,避免使用Manager这样的。如果该数据结构需要序列化,如json, 则首字母大写, 包括里面的字段。

五、receiver命名规范

    golang 中存在receiver 的概念 Receiver 的名称应该缩写,应该尽量保持一致, 避免this, super,等其他语言的一些语义关键字如下

 

type A struct{}
 
func (a *A) methodA() {
}
func (a *A) methodB() {
  a.methodA()
}

 

六、函数/方法命名规范

 

由于Golang的特殊性(用大小写来控制函数的可见性),除特殊的性能测试与单元测试函数之外, 都应该遵循如下原则

 

  1. 采用驼峰式。将功能及必要的参数体现在名字中, 不要嫌长, 如updateById,getUserInfo.
  2. 如果包外不需要访问请用小写开头的函数
  3. 如果需要暴露出去给包外访问需要使用大写开头的函数名称

 

一个典型的函数命名方法如下:

 

// 注释一律使用双斜线, 对象暴露的方法
func (*fileDao) AddFile(file *model.File) bool {
  result := db.NewRecord(*file)
  if result {
   db.Create(file)
  }
  return result
}
  
// 不需要给包外访问的函数如下
func removeCommaAndQuote(content string) string {
  re, _ := regexp.Compile("[\\`\\,]+")
  return strings.TrimSpace(re.ReplaceAllString(content, ""))
}

 

七、注释命名规范

 

每个包都应该有一个包注释,位于 package 之前。如果同一个包有多个文件,只需要在一个文件中编写即可;如果你想在每个文件中的头部加上注释,需要在版权注释和 Package前面加一个空行,否则版权注释会作为Package的注释。如:

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package net

 

每个以大写字母开头(即可以导出)的方法应该有注释,且以该函数名开头。如:

// Get 会响应对应路由转发过来的 get 请求
func (c *Controller) Get() {
    ...
}

 

大写字母开头的方法以为着是可供调用的公共方法,如果你的方法想只在本包内掉用,请以小写字母开发。如:

func (c *Controller) curl() {
    ...
}

 

注释应该用一个完整的句子,注释的第一个单词应该是要注释的指示符,以便在 godoc 中容易查找。

 

注释应该以一个句点 . 结束。

 

八、package命名规范

    包名用小写,使用短命名,尽量和标准库不要冲突。包名统一使用单数形式。

九、文件命名规范 

    由于文件跟包无任何关系, 而又避免windows大小写的问题,所以推荐的文件规范如下:

    文件名应一律使用小写, 不同单词之间用下划线分割, 不用驼峰式,命名应尽可能地见名知意。尽量见名思义,看见文件名就可以知道这个文件下的大概内容.其中测试文件以_test.go结尾,除测试文件外,命名不出现_。

 

posted @ 2020-03-11 22:45  DreamBoy_张亚飞  阅读(5013)  评论(0编辑  收藏  举报