Go高质量编程与性能调优 | 青训营笔记

53 阅读2分钟
这是我参与「第五届青训营」伴学笔记创作活动的第 3 天

高质量编程

高质量编程原则

高质量代码要满足准确性、可靠性、简洁和清晰。

简单性

以简单清晰的逻辑编写代码。

可读性

代码是给人看的,所以要保证可读性,这也是可维护性的基础。

生产力

要保证团队整体的工作效率。

编写高质量代码的方法

代码格式

使用gofmt工具自动格式化代码,常见的IDE都可以使用。

注释

注释应该解释代码的作用。

注释应该解释代码实现的原因。

注释应该解释代码出错的情况。

代码本身是最好的注释。

命名规范

尽量简洁。

缩略词全大写,位于开头且不需要导出时使用全小写。

变量距离使用的地方越远,需要提供越多的上下文信息。

控制流程

尽量保持正常代码路径位最小缩进。

处理逻辑要避免复杂的嵌套分支。

提升代码的可维护性和可读性。

错误和异常处理

error要提供上下文信息方便定位。

panic处理真正异常的情况。

recover在当前goroutine的呗defer函数中生效。

性能优化

Benchmark

Benchmark可以帮助程序员了解代码的执行次数,每次执行花费的时间,每次申请的内存和内存申请次数。

Slice

在初始化时指定足够的容量,避免重新分配内存。

原切片较大时使用copy代替re-slice,可以让底层数组得以释放。

Map

Map在初始化时也应该预分配足够的内存。

字符串

字符串拼接使用string.Builder等函数

空结构体

使用map实现集合set时,只需要map的键,值使用空结构体类型可以节省空间。

atomic包

使用atomic包代替mutex锁,效率更高。

性能调优实战

简介

性能调优要依靠数据,定位最大瓶颈而不是细枝末节,不要过早和过度优化。

性能分析工具pprof

pprof可以排查代码占用CPU,内存,内存分配等等资源异常的地方。

web命令会用浏览器打开可视化文件,查看调用关系,方便定位异常代码。