Golang 推荐的命名规范

不多见人总结一些命名规范,也多是笔者孤陋寡闻, 做为一个两年的golang 开发者, 我根据不少知名的项目,如 moby, kubernetess 等总结了一些常见的命名规范。 命名规范可使得代码更容易与阅读, 更少的出现错误。git

若有不一样意见欢迎吐槽、讨论。 项目地址github

文件命名规范

因为文件跟包无任何关系, 而又避免windows大小写的问题,因此推荐的明明规范以下: 文件名应一概使用小写, 不一样单词之间用下划线分割, 命名应尽量地见名知意golang

常量命名规范

常量明明用 camelcase来命名示例以下windows

const todayNews = "Hello"
复制代码

// 若是超过了一个常量应该用括号的方法来组织函数

const (
   systemName = "What"
   sysVal = "dasdsada"
)
复制代码

变量命名规范

与常量命名方式同样,变量也应该使用驼峰的命名方式, 但注意尽可能不与包名一致或者以包名开头性能

var  x string
x := new(string)
复制代码

函数命名规范

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

  1. 使用驼峰命名
  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, ""))
}
复制代码

接口命名规范

接口命名也是要遵循驼峰方式命名, 能够用 type alias 来定义大写开头的type 给包外访问ui

type helloWorld interface {
    func Hello(); } type SayHello helloWorld 复制代码

Struct命名规范

与接口命名规范相似this

receiver 命名规范

golang 中存在receiver 的概念 receiver 名称应该尽可能保持一致, 避免this, super,等其余语言的一些语义关键字以下

type A struct{}

func (a *A) methodA() {
}
func (a *A) methodB() {
    a.methodA()
}
复制代码

注释规范

注释应一概使用双斜线

其余

格式化, 用tab不是空格, 能够与go fmt 兼容

相关文章
相关标签/搜索