这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
如何编写高质量的Go代码
代码格式
推荐:使用 gofmt 自动格式化代码,保证所有的 Go 代码跟官方统一风格一致。
注释
- 注释应该解释代码作用,这种注释适合说明公共符号,如对外提供的函数注释描述它的功能和用途.只有在函数的功能简单而明显时才能省略这些注释(例如,简单的取值和设值函数)
- 注释对代码中复杂的、并不明显的逻辑进行说明,适合注释实现过程。
- 注释可以解释代码的外部因素,这些因素脱离上下文后通常很难理解。
- 注释应该提醒使用者一 些潜在的限制条件或者会无法处理的情况
- 公共符号始终要注释。包中声明的每个公共的符号:变量、常量、函数以及结构都需要添加注释;任何既不明显也不简短的公共功能必须予以注释;无论长度或复杂程度如何,对库中的任何函数都必须进行注释。
代码是最好的注释
注释应该提供代码末表达出的上下文信息
命名规范
函数命名规范:
-
函数名不携带包名的上下文信息,因为包名和函数名总是成对出现的
-
函数名尽量简短
-
当名为foo的包某个函数返回类型Foo时,可以省略类型信息而不导致歧义
-
当名为foo 的包某个函数返回类型T时(T并不是Foo),可以在函数名中加入类型信息
包命名规范:
- 只由小写字母组成。不包含大写字母和下划线等字符。
- 简短并包含一定的上下文信息。例如schema、task 等。
- 不要与标准库同名。例如不要使用sync或者strings。
另外,以下规则尽量满足,
- 不使用常用变量名作为包名。例如使用bufio而不是buf
- 使用单数而不是复数。例如使用encoding而不是encodings
- 谨慎地使用缩写。例如使用fmt在不破坏上下文的情况下比format更加简短