这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
编码规范
注释
简而言之,就是只要写了,就一定得直接说清楚,这个部分代码是干嘛的,提供代码未表达出的上下文信息,便于理解。
命名规范
对于局部的命名:比如for循环内的变量命名,不必过于规范,因为它只对循环范围内有效,不会影响对于程序作用的理解。
而对于有其他含义的变量名,需要规范命名,使能直观理解避免产生歧义。
错误处理和异常
简单错误:
errors.New("抛出错误错误语句")//用来自行创建匿名变量来直接表示错误
fmt.Errorf("抛出错误语句:%w",err)//在fmt.Errorf中使用%w关键字来将一个错误关联至错误链中
错误判定:
判断一个错误是否为特定错误errors.Is
if errors.Is(错误,特定错误){处理}
在错误链上获取特定种类的错误errors.As
if errors.As(错误,想获取的特定错误){处理}
panic:
使没意义的启动尽早停止,尽早暴露错误
recover:
对应处理panic,当panic影响自身代码逻辑的时候使用
使用时常常将panic的调用栈打印出来,方便分析定位问题
性能优化建议
评估代码性能
go test -bench=. -benchmem
-Slice
提前提供容量信息可以提高代码性能。
对同一切片的操作,先创建一个新切片,然后copy原来切片所需内容,比直接返回对原切片进行操作后的结果,更节省内存。能提高性能。
-Map
同样,预分配(提前提供容量信息)可以提高代码性能。
pprof实战排查
关于解决clone代码报红:
需要引包
1、需要进入.go项目所在目录
2、go mod init 包名
3、go mod tidy
关于浏览器查看指标:
1、运行go-pprof-practice目录下的main.go:go run main.go
2、增加一个TERMINAL窗口(点击TERMINAL窗口左上角的"+")
3、在go-pprof-practice目录下输入go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10" //10:指运行10秒的数据
之后的性能排查以及解决就不再复制ppt了。完全没有接触过难以表述有什么总结见解。