Go语言高质量编码笔记|青训营

62 阅读2分钟

高质量编程遵循的原则是相通的 简单性

  1. 消除多余的复杂性,以简单清晰的逻辑编写代码
  2. 不理解的代码无法进行修改

可读性

  1. 代码是写给人看的
  2. 编写可维护代码的第一步是确保代码可读 生产力 1.团队整体工作效率非常重要

1编码规范-代码格式

使用gofmt自动格式化代码

gofmt

是Go语言官方提供的工具,能自动格式化Go语言代码为官方统一风格,常见IDE都支持方便的配置

goimports

也是Go语言官方提供的工具,实际上等于gofmt加上依赖包管理,自动增删依赖的包引用将依赖包按字母序排序并分类

2编码规范-注释

好的注释应该做到

  1. 解释代码的作用
  2. 解释代码如何做的
  3. 解释代码实现的原因
  4. 解释代码什么情况会出错 5.应该提供代码未表达出的上下文信息

3编码规范-命名规范

variable

  1. 简介胜于冗长

  2. 缩略词全大写,但其位于变量开头且不需要导出时,使用全小写

    比如使用ServeHTTP而不是ServeHttp

    使用XMLHHTTPRequest而不是xmlHTTPRequest

3.变量距离其被使用的地方越远,则需要携带越多的上下文信息

全局变量在其名字中需要更多的上下文信息,使得在不同地方可以轻易辨认出其含义

function

  1. 函数名不携带包名的上下文信息,因为包名和函数名总是成对出现的
  2. 函数名尽量短
  3. 当名为foo的包某个函数返回类型Foo时,可以省略类型信息
  4. 当名为foo的包某个函数返回类型T时,可以在函数中加入类型信息

package

  1. 只由小写字母组成,不包含大写字母和下划线等字符
  2. 简短并含有一定的上下文信息,例如schema、task等
  3. 不要与标准库重名

尽量满足以下规则

  1. 不使用常用变量名作为包名,例如使用bufio而不是buf
  2. 尽量使用单数而不是复数,例如使用encoding而不是encodings
  3. 谨慎使用缩写

编码规范-控制流程

  1. 避免嵌套,保持正常流程清晰
  2. 尽量保持正常代码路径为最小缩进,优先处理错误情况、特殊情况,尽早返回或继续循环来减少嵌套

编码规范-错误和异常处理

  1. error尽可能提供简明的上下文信息链,方便定位问题

  2. panic用于真正异常的情况

  3. recover生效范围,在当前goroutine的被defer的函数中生效