广告
返回顶部
首页 > 资讯 > 后端开发 > GO >Go中变量命名规则与实例
  • 494
分享到

Go中变量命名规则与实例

2024-04-02 19:04:59 494人浏览 薄情痞子
摘要

目录前言命名习惯很重要良好命名喜欢的特质经验法则大小写混用的变量名变量名避免冗余函数参数的命名返回值的命名方法 Receiver 的命名导出 package 级别变量命名接口类型er

前言

来自 Google 的 Andrew Gerrand 曾经关于 Go 中的参数命名规范进行了分享,slides 为 https://talks.golang.org/2014/names.slide

命名习惯很重要

  • 良好的可读性是高质量代码的要求之一
  • 良好的命名习惯有助于提高代码可读性

良好命名喜欢的特质

Good Name 将具有如下的特质:

  • Consistent (easy to guess),
  • Short (easy to type),
  • Accurate (easy to understand)

经验法则

变量申明与变量使用之间越远,那么变量名字应当越长。

这也解释了,为什么 for 循环次数变量使用 i 作为遍历用的临时变量,而不是语义上更具体的 index 作为变量名。

大小写混用的变量名

我们不应该使用 names_with_underscores 作为变量名,而是 namesWithUnderscores 作为变量名。

另一方面,首字母缩略词,应当是大写,例如 ServeHttp 以及 IDProcessor。

这被称为 MixedCase,类似于驼峰原则命名,但是专业词汇的首字母缩写均应当写成大写形式。

变量名避免冗余

变量名不是越长越好,常变量名会模糊代码功能。

常见的常量、类型组合可能使用非常简短的名字:

  • 使用 i 而不是 index
  • 使用 r 而不是 reader
  • 使用 b 而不是 buffer

根据上下文,避免使用冗余的名称:

  • 在 RuneCount 方法内部,使用 count 而不是 reuneCount
  • 在 map 语句中,使用 ok 而不是 keyInMap:
v, ok := m[k]

常变量名也许在长函数、有很多变量的函数中有帮助,但是这通常也意味着你应该重构代码。

Bad codes vs good codes

// Bad
func RuneCount(buffer []byte) int {
      // runeCount -> count
    runeCount := 0
      // index -> i , buffer -> b
    for index := 0; index < len(buffer); {
        if buffer[index] < RuneSelf {
            index++
        } else {
              // size -> n
            _, size := DecodeRune(buffer[index:])
            index += size
        }
        runeCount++
    }
    return runeCount
}
// Good
func RuneCount(b []byte) int {
    count := 0
    for i := 0; i < len(b); {
        if b[i] < RuneSelf {
            i++
        } else {
            _, n := DecodeRune(b[i:])
            i += n
        }
        count++
    }
    return count
}

函数参数的命名

函数参数与变量名一样,都起到了文档的作用。

1.当函数参数的类型具有描述性时,那么函数参数名就可以简短一些:

func AfterFunc(d Duration, f func()) *Timer
func Escape(w io.Writer, s []byte)

2.当函数参数的类型语义不清,那么参数名应当更具体详细一些:

func Unix(sec, nsec int64) Time
​​​​​​​func HasPrefix(s, prefix []byte) bool

返回值的命名

导出函数(exported function)返回值应当仅仅出于编写文档目的进行命名。

下面是返回值命名的好例子:

// Good
func Copy(dst Writer, src Reader) (written int64, err error)
// Good
func ScanBytes(data []byte, atEOF bool) (advance int, token []byte, err error)

方法 Receiver 的命名

Go 中结构体可以拥有方法,在为结构体声明方法时,结构体被称为 receiver。

按照惯例,方法接收者的命名通常为 1 个字符或者 2 个字符,因为结构体的每一个方法都将使用同一个 receiver 名称。

// Good
func (b *Buffer) Read(p []byte) (n int, err error)
// Good
func (sh serverHandler) ServeHTTP(rw ResponseWriter, req *Request)
// Good
func (r Rectangle) Size() Point

Receiver 的名称一定要确保一致性,如果结构体的 method1 使用 r 作为 receiver 名称,那么 method2 就不应当使用 rdr 作为名称。

导出 package 级别变量命名

package 级别的变量已经被 package name 限定了,因此需要注意导出变量、常量、函数、类型名的冗余问题。

例如:

  • 我们使用 bytes.Buffer 而不是 bytes.ByteBuffer
  • 我们使用 strings.Reader 而不是 strings.StringReader

导出变量名不要与 package 之间存在冗余。

接口类型

只有一个方法的接口,接口名通常简单在方法后面加上 er 来进行命令,例如:

type Reader interface {
    Read(p []byte) (n int, err error)
}

有时候,上述策略会导致接口名语法不正确,但是我们仍然可以选择这么做,例如:

type Execer interface {
    Exec(query string, args []Value) (Result, error)
}

也有时候,我们会修改接口名,使得其符合英语语法:

type ByteReader interface {
    ReadByte() (c byte, err error)
}

当一个接口包含多个方法时,应当选择一个准确描述其用途的名称,例如 net.Conn,http.ResponseWriter,io.ReadWriter。

error 命名

错误类型与错误变量应当有不同的命名格式:

// 错误类型 Error types
type ExitError struct {
    ...
}
// 错误变量 Error values
var ErrFORMat = errors.New("image: unknown format")

Packages 名

选择对导出的名称具有意义的包名称。

避免使用 util、common 等包名。

结论

使用短变量名

变量取名考虑上下文,避免冗余,例如函数内的局部变量考虑函数名,包导出变量考虑包名

总结

到此这篇关于Go中变量命名的文章就介绍到这了,更多相关Go变量命名内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Go中变量命名规则与实例

本文链接: https://www.lsjlt.com/news/162887.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Go中变量命名规则与实例
    目录前言命名习惯很重要良好命名喜欢的特质经验法则大小写混用的变量名变量名避免冗余函数参数的命名返回值的命名方法 Receiver 的命名导出 package 级别变量命名接口类型er...
    99+
    2022-11-13
  • Go中变量命名规则及实例分析
    这篇文章主要为大家分析了Go中变量命名规则及实例分析的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“Go中变量命名规则及实例分析”的知识吧。命名习惯很重要良好...
    99+
    2023-06-26
  • python变量的命名规则
    这篇文章主要讲解了“python变量的命名规则”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python变量的命名规则”吧!变量的命名:       ...
    99+
    2023-06-02
  • C#变量命名规则小结
    变量: 1.作用 :可以让我们在计算机中存储数据 2.语法:变量类型    变量名=赋值; 3.常用的数据类型: int  ...
    99+
    2022-11-12
  • 变量命名规则有哪些
    变量命名规则主要包括以下几点:1. 变量名只能包含字母、数字和下划线(_),不能包含空格或特殊字符。2. 变量名不能以数字开头。3....
    99+
    2023-09-23
    变量
  • python中的变量命名规则详情
    目录1.变量命名1)命名的规范性2)编程语言常用驼峰命名法2. 变量命名的描述性3.变量名尽量短,但是不要太短4.合理使用变量5. 变量定义尽量靠近使用6. 合理使用namedtup...
    99+
    2022-11-13
  • vb中变量名的命名规则有哪些
    在VB中,变量名的命名规则如下:1. 变量名必须以字母开头。2. 变量名可以包含字母、数字、下划线(_)和句点(.)。3. 变量名不...
    99+
    2023-09-13
    vb
  • java变量命名规则是什么
    Java变量命名规则如下:1. 只能以字母、下划线或美元符号开头。2. 后续字符可以是字母、数字、下划线或美元符号。3. 大小写敏感...
    99+
    2023-10-09
    java
  • php变量命名规则有哪些
    php中变量的命名规则有以下几点php中变量名必须以"$"符号开头;php中变量名"$"符号后,必须由字母、下划线和数字组成,且不能以数字开头;php中变量名不能出现空格或标点符号,只能使用a-z、A-Z、0-9和下划线;php中变量名区分...
    99+
    2022-10-08
  • shell变量名的命名规则有哪些
    在Shell脚本中,变量名的命名规则如下:1. 变量名只能由字母、数字和下划线组成。2. 变量名必须以字母或下划线开头。3. 变量名...
    99+
    2023-09-25
    shell
  • javascript中命名变量的规则是什么
    这篇“javascript中命名变量的规则是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2022-10-19
  • vba中变量的命名规则有哪些
    在VBA中,变量的命名规则如下:1. 变量名必须以字母开头,可以包含字母、数字和下划线。2. 变量名不区分大小写,但建议使用驼峰命名...
    99+
    2023-09-05
    vba
  • Python变量命名规则和定义变量详解
    目录一、定义变量二、定义变量的规则总结 一、定义变量 语法规则: 变量名 = 值 定义变量的语法规则中间的‘=',并不是数学中等于号的意思,在编程语言中而是赋值的意思。赋值:其...
    99+
    2022-11-12
  • javascript变量的声明与命名规范实例分析
    本篇内容主要讲解“javascript变量的声明与命名规范实例分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“javascript变量的声明与命名规范实例分析...
    99+
    2022-10-19
  • c语言变量命名规则有哪些
    C语言的变量命名规则包括以下几点:1. 变量名可以由字母、数字和下划线组成。2. 变量名必须以字母或下划线开头。3. 变量名不能使用...
    99+
    2023-08-30
    c语言
  • 前端变量函数命名规则总结
    目录引言不要嫌弃函数名过长变量 / 函数 命名头部什么时候用 has , 什么时候用 is一个好的命名需要遵循的规则函数变量使用缩写比较通用的缩写常量命名单词拼接 加深语义化引入自定...
    99+
    2022-11-13
  • Python语言变量命名规则是什么
    Python语言变量命名规则有变量名的组成、命名规范和遵循命名惯例。详细介绍:1、变量名的组成,变量名的第一个字符必须是字母,不能以数字开头,但可以包含数字,对大小写敏感,不能是Python的关键字或内置函数的名称;2、命名规范,变量名应该...
    99+
    2023-12-13
    python Python语言变量
  • 如何解析Python 变量命名规则和定义变量
    这篇文章给大家介绍如何解析Python 变量命名规则和定义变量,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、定义变量语法规则:变量名 = 值定义变量的语法规则中间的‘=',并不...
    99+
    2023-06-22
  • c语言中变量的命名规则是什么
    C语言中变量的命名规则如下:1. 变量名只能由字母、数字和下划线组成。2. 变量名必须以字母或下划线开头,不能以数字开头。3. 变量...
    99+
    2023-08-18
    c语言
  • 如何浅析.NET中文变量及方法的命名规则
    这期内容当中小编将会给大家带来有关如何浅析.NET中文变量及方法的命名规则,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。我们将介绍.NET中文变量及方法的命名规则,相信通过规范的.NET中文变量及方法的命...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作