高质量编程 | 青训营笔记

65 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

如何编写高质量的Go代码

代码格式

推荐:使用 gofmt 自动格式化代码,保证所有的 Go 代码跟官方统一风格一致。

注释

  • 注释应该解释代码作用,这种注释适合说明公共符号,如对外提供的函数注释描述它的功能和用途.只有在函数的功能简单而明显时才能省略这些注释(例如,简单的取值和设值函数)
  • 注释对代码中复杂的、并不明显的逻辑进行说明,适合注释实现过程。
  • 注释可以解释代码的外部因素,这些因素脱离上下文后通常很难理解。
  • 注释应该提醒使用者一 些潜在的限制条件或者会无法处理的情况
  • 公共符号始终要注释。包中声明的每个公共的符号:变量、常量、函数以及结构都需要添加注释;任何既不明显也不简短的公共功能必须予以注释;无论长度或复杂程度如何,对库中的任何函数都必须进行注释。

代码是最好的注释

注释应该提供代码末表达出的上下文信息

命名规范

函数命名规范:

  1. 函数名不携带包名的上下文信息,因为包名和函数名总是成对出现的

  2. 函数名尽量简短

  3. 当名为foo的包某个函数返回类型Foo时,可以省略类型信息而不导致歧义

  4. 当名为foo 的包某个函数返回类型T时(T并不是Foo),可以在函数名中加入类型信息

包命名规范:

  • 只由小写字母组成。不包含大写字母和下划线等字符。
  • 简短并包含一定的上下文信息。例如schema、task 等。
  • 不要与标准库同名。例如不要使用sync或者strings。

另外,以下规则尽量满足,

  1. 不使用常用变量名作为包名。例如使用bufio而不是buf
  2. 使用单数而不是复数。例如使用encoding而不是encodings
  3. 谨慎地使用缩写。例如使用fmt在不破坏上下文的情况下比format更加简短