• 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结尾,除测试文件外,命名不出现_。

  • 相关阅读:
    SQL常规查询详解
    WEBGL学习【二】平面图形
    WEBGL学习【一】初识WEBGL
    VS2008集成QT的OpenGL开发(实现二维图形的旋转)
    Window文件路径
    字符串转DateTime
    字符串连接
    String.Split分隔字符串
    使用对象初始值设定项初始化
    表达式树
  • 原文地址:https://www.cnblogs.com/zhangyafei/p/12466162.html
Copyright © 2020-2023  润新知