高质量代码的产生 | 青训营笔记

41 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第三天

高质量编程

高质量指 正确可靠,简洁清晰

需要考虑,边界条件,稳定性,易读和易维护 image.png image.png

1.如何编写更简洁清晰的代码

image.png

image.png

代码格式固定
注释

公共符号必须要有注释

解释代码是如何做的

解释代码的逻辑结构

解释代码的限制条件

注释要补充代码未表达的信息

image.png

命名规范

目的还是降低阅读和理解成本

1.变量命名

image.png

2.函数命名

image.png 例如

image.png 两个命名格式第一个会好点,因为他本身就在http包里面

3.包命名

image.png

控制流程

1.避免嵌套

2.优先处理错误情况和特殊情况,尽早检查到,减少额外的

image.png

错误和异常处理

1.简单错误

image.png 处理方法例如

image.png

2.复杂错误

image.png

业务代码中尽量不使用panic,用error代替panic

recover的使用

image.png recover只在当前goroutine的被defer的函数中生效 1

2.常用go语言性能优化

评估代码性能 go test -bench=. -benchmem 该命令为官方带的评测工具

1.slice预分配内存,make初始化的时候提供切片容量

2.在原有基础上创建切片可能会导致大内存没释放

image.png

3。map内存预分配

4.字符串处理

用+号,性能最差

用strings.builder时间最短

用bytebuffer

5.空结构体

使用可以节省内存

6.atomic包

image.png

7.小结

image.png

3.go程序分析工具

pprof工具

pprof功能简介

image.png

pprof排查实战

image.png

image.png top 查看调用函数占比例资源最多的函数 image.png list根据表达式查找代码行 image.png web 调用函数关系可视化 heap堆内存

image.png

image.png

pprog检查协程goroutine

image.png pprof检查锁操作

image.png

block(阻塞)的检查

image.png

pprof采样过程和原理

cpu原理 image.png

image.png

heap,堆内存采样

image.png 协程采样

image.png

lock操作采样

image.png

4.性能优化的原则和流程

image.png

性能调优实战

image.png 一些基础概念

image.png

业务服务优化

流程

image.png

评估手段

image.png

高并发优化

image.png