单元测试
func TestXxx(t *testing.T){
}
main 函数为:
func TestMain(m *Testing.M){
//数据、配置初始化
code:= m.Run()
//资源释放等
}
test覆盖率
Mock 测试(如果有外部依赖)
基准测试 并行基准测试
Benchmarkxxx(b *testing.B){}
代码是最好的注释
注释作用、(原理)、以及 原因(比如脱离上下文就无法理解),还没解决的bug或者在什么情况下会出错
全局信息等(比如公共符号、变量)比较重要或者远离使用位置的时候最好要保留信息
高质量代码
命名规范:
简介避免重复,比如:
time.Now()
time.Nowtime()
选择第一种就很好,下面的第一种就很好,说明了这个time作用是deadline

注意package包名不要与标准库重复,可以在不破坏语义的情况下简写,比如:format 可以简写为 fmt
合理嵌套,能最先找出退出条件的放在前面,保证if语句的可读性(有必要学习一下)
![]() | ![]() |
错误的包装提供了一个error嵌套另一个error的能力,生成一个error的跟踪链,同时结合错误的判定方法来确认调用链中是否有关注的错误出现。这个能力的好处是每一层调用方可以补充自己对应的上下文,方便跟踪排查问题,确定问题的根本
判断错误是否属于某种错误,使用errors.is
在错误链上获取特定的错误,使用errors.as
不建议使用panic,担当程序启动发生不可逆转的错误时候,可以在init或者main函数中使用
了解一下recover
编写规范:
gofmt自动格式化代码
考虑goimports,会对依赖包进行管理,自动增删依赖的包引用,按字母序排序分类,具体可以根据团队实际情况配置使用
性能测试
性能基准测试工具: benchmark 可以使用go test -bench = .-benchmem
如何在后端调试是个关键,我们不需要考虑前端

:a:go.mod 管理工具包,可以去copy他的包的内容,不需要,队长已经解决
Error 1146 (42S02): Table 'ttt.user_infos' doesn't exist
云原生下开发

单元测试最重要

认识了后端开发的一周
这是我参与「第五届青训营 」笔记创作活动的第9天.

