参考资料:Go Wiki: Go 代码审查评论#
- ## Gofmt ✅ 2024-03-07
- goimports ✅ 2024-03-07
- ## 注释句子 ✅ 2024-03-07
- ## 上下文
- ## 复制 ✅ 2024-03-07
- ## 加密随机数 ✅ 2024-03-07
- 使用
crypto/rand
代替math/rand
生成密钥 - 以十六进制或 base64 打印
- 使用
- ## 声明空切片 ✅ 2024-03-07
var t []string
nil,JSON 编码为null
t:=[]string{}
非 nil 的零长度,JSON 编码为[]
- ## 文档注释 ✅ 2024-03-07
- 顶层,导出的名称
- 非平凡的未导出类型或函数声明
- https://go.dev/doc/effective_go#commentary
- ## 不要惊慌
- https://go.dev/doc/effective_go#errors. ✅ 2024-03-07
- https://go.dev/doc/effective_go#recover. ✅ 2024-03-07
- 在包内恢复
- ## 错误字符串 ✅ 2024-03-07
- 除了日志记录,不要大写
- ## 示例 ✅ 2024-03-07
- ## Goroutine 生命周期 ✅ 2024-03-07
- 明确它们何时 / 是否退出
- 保持简单明了或进行文档说明
- ## 处理错误 ✅ 2024-03-07
- https://go.dev/doc/effective_go#errors ✅ 2024-03-07
- ## 导入 ✅ 2024-03-07
- 避免重命名
- 重命名最局部或项目特定的导入
- 按组组织
- goimports ✅ 2024-03-07
- ## 空白导入 ✅ 2024-03-07
- 仅在 main 或测试中使用
- ## 点导入 ✅ 2024-03-07
- 在测试时解决循环依赖
- 不在其他地方使用
- ## 带内错误 ✅ 2024-03-07
- 更喜欢额外的有效值而不是带内错误
- ## 缩进错误流程 ✅ 2024-03-07
- 正常代码的最小缩进
- ## 首字母缩写 ✅ 2024-03-07
- 使用一致的大小写规则缩写
- ## 接口
- ## 行长度
- ## 混合大小写 ✅ 2024-03-07
- https://go.dev/doc/effective_go#mixed-caps
- 首字母缩写 ✅ 2024-03-07
- ## 命名结果参数 ✅ 2024-03-07
- 不要仅仅为了避免声明而给结果参数命名
- ## 裸返回 ✅ 2024-03-07
- 命名结果参数 ✅ 2024-03-07
- ## 包注释 ✅ 2024-03-07
- ## 包名 ✅ 2024-03-07
- ## 传递值 ✅ 2024-03-07
- 不要仅仅为了节省几个字节而传递指针
- ## 接收器名称 ✅ 2024-03-07
- 简短但一致
- ## 接收器类型 ✅ 2024-03-07
- 最后,如果不确定,请使用指针接收器
- ## 同步函数 ✅ 2024-03-07
- 更喜欢同步函数而不是异步函数
- ## 有用的测试失败
if got !=tt.wang{t.Errorf("Foo(%q) = %d; want %d", tt.in, got, tt.want) // or Fatalf, if test can't test anything more past this point
}- 表驱动测试.
- ## 变量名 ✅ 2024-03-07
- 简短而不是冗长
- 基本规则:名称距离其声明越远,名称必须越具描述性
- Google Go 风格指南.