这是我参与「第五届青训营 」伴学笔记创作活动的第 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 等运行指标