Go编码规范|青训营笔记

34 阅读1分钟

Go编码规范|青训营笔记

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

1.代码格式

使用工具 gofmt(go imports),自动进行格式化

2.注释

好的代码有很多注释,坏代码需要很多注释

注释应该做的:解释作用、如何做的、实现的原因、为何出错

解释作用:注释公共符号

如何做的: 对复杂、不直观的实现过程进行说明

实现的原因: 外部因素,提供上下文

为何出错: 代码的限制条件

3.命名

变量名:

  • 缩略词全部大写
  • 变量离作用区越远,命名携带信息需越详细

函数参数:

  • 尽量缩短成简写

函数名:

  • 函数名不用包含包名(函数和包总是成对出现)

    第一个命名更好

image-20230116153509520

包名:

  • 只有小写,没有大写和下划线
  • 不要与标准库重名

4.控制流程

  • if-else中两个return,可以省略后面的else
  • 优先处理异常情况

5.异常处理

简单错误(只出现一次的错误)

  • 优先使用errors.New创建匿名变量表示简单错误
  • fmt.Errorf对异常进行格式化

复杂错误

  • Wrap:提供error嵌套error,实现错误跟踪链

    image-20230116154722278

错误判断

  • errors.Is 判断是否是特定错误

  • errors.As 在错误链中获取特定错误类型

    image-20230116154918558

Panic

  • 不建议在业务代码中使用panic(没有recover程序直接崩溃)
  • 当程序发生了不可逆转的错误时候可以使用panic

Recover

image-20230116155135176

image-20230116155251327