Go编码规范|青训营笔记
这是我参与「第五届青训营」伴学笔记创作活动的第4天
1.代码格式
使用工具 gofmt(go imports),自动进行格式化
2.注释
好的代码有很多注释,坏代码需要很多注释
注释应该做的:解释作用、如何做的、实现的原因、为何出错
解释作用:注释公共符号
如何做的: 对复杂、不直观的实现过程进行说明
实现的原因: 外部因素,提供上下文
为何出错: 代码的限制条件
3.命名
变量名:
- 缩略词全部大写
- 变量离作用区越远,命名携带信息需越详细
函数参数:
- 尽量缩短成简写
函数名:
-
函数名不用包含包名(函数和包总是成对出现)
第一个命名更好
包名:
- 只有小写,没有大写和下划线
- 不要与标准库重名
4.控制流程
- if-else中两个return,可以省略后面的else
- 优先处理异常情况
5.异常处理
简单错误(只出现一次的错误)
- 优先使用errors.New创建匿名变量表示简单错误
- fmt.Errorf对异常进行格式化
复杂错误
-
Wrap:提供error嵌套error,实现错误跟踪链
错误判断
-
errors.Is 判断是否是特定错误
-
errors.As 在错误链中获取特定错误类型
Panic
- 不建议在业务代码中使用panic(没有recover程序直接崩溃)
- 当程序发生了不可逆转的错误时候可以使用panic
Recover