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

61 阅读2分钟

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

1.高质量编程

定义 :编写的代码能够达到正确可靠、简洁清晰的目标。

编码规范

(1)代码格式

推荐使用gofmt自动格式化代码

(2)注释

注释应该能做到

1.解释代码作用

2.解释代码如何做的

3.解释代码实现的原因

4.解释代码什么情况会出错

特别的:公共符号始终要注释

(3)命名规范

1.简洁

2.缩略词全大写,但当期位于变量开头且不需要导出时,使用全小写

3.package名只由小写字母组成

4.变量距离使用的地方越远,则需要携带更多的注释来解析上下文信息

5.函数名不携带包名

(4)控制流程

1.避免嵌套,保持正常流程

2.保持正常代码路径为最小缩进

3.特别关注复杂的条件语句和循环语句,容易出故障问题

(5)错误和异常处理

优先使用errors.New来创建匿名变量来直接表示简单错误

如果有格式化需求,用fmt.Errorf

性能优化建议

性能优化的前提是满足正确可靠、简洁清晰等质量因素

(1)benchmark 工具

Go语言提供了支持基准性能测试的 benchmark 工具

例子:

// from fib.go
func Fib(n int) int {
    if n < 2 {
        return n
    }
    return Fib(n - 1) + Fib(n - 2)
}
​
// from fib_test.go
func BenchmarkFib10(b *testing.B) {
    // run the Fib funciton b.N times
    for n := 0; n < b.N; n++ {
        Fib(10)
    }
}

(2)Slice预分配内存

在使用 make() 初始化切片时提供容量信息,可优化时间

用 copy 代替 re-slice 可释放大内存

(3)Map预分配内存

与slice相似

2.性能调优实战

原则:

1.依靠数据而非猜测

2.找到决速反应,而非细枝末节

3.不要过早开始优化

4.不要过度优化

pprof工具

(1)功能

1.pprof 是用于可视化和分析性能分析数据的工具

2.可以知道应用在什么地方耗费了多少 CPU、memory 等运行指标

img