这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
今天知识点比较密集,但萌新鼠鼠表示不求全会,记个笔记留个印象先.
一、本堂课重点内容:
- 高质量编程
- 编码规范
- 性能优化建议
- 性能调优实战
- pprof工具实战
- 企业级调优案例
二、详细知识点介绍:
-
编码规范
- 代码格式:可以使用ide自带的格式化工具,默认快捷键是ctrl+alt+L
- 注释:需要给出额外的信息,不要冗余.注释要做到解释代码的作用,实现的原因,特殊的情况,提供额外的上下文等(至少达到其一).
- 命名:和package包同名的可以省略(实际上goland也会提醒这个冗余信息);定义越是远离使用的地方,变量名要带有越详细的语义.
- 控制流:避免嵌套if,能写开的要写开;if-else两个分支都有return的,省掉else的(和我大学软工课的有出入..);错误及时处理.
- 错误处理:
-
error.New(str)
-
fmt.Errorf(format,...)
-
errors.Is(err,errType) bool
-
errors.As(err,&errTypeInstance) bool
- 如果要取出具体错误的属性的话用errors.As
-
panic(),recover()
-
-
性能优化
- make slice 尽量提供cap信息.
- 在原有大切片基础上创建小切片,尽量用copy(dest,src)
- make(map,size),尽量提供size信息
- 字符串处理尽量使用string.Builder/bytes.Buffer,因为string是不可变的,[]byte字节流是可变的.
- 空结构体占位不需要任何内存资源.
- 变量加锁使用atomic包
-
pprof常用的命令:
- http://localhost:6060/debug/pprof
- go tool pprof "http://localhost:6060/debug/pprof/xxx"
- go tool pprof -http=:8080 "http://localhost:6060/debug/pprof/xxx"
三、实践练习例子:
- 有什么实践举例帮助理解知识点?
- 小动物的例子.
四、课后个人总结:
- 本章有什么知识点不容易掌握?
- 最后一些底层的东西
- 什么地方容易与其他内容混淆?
- 无