Go 高质量编程与性能调优 | 青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天,本节课主要讲了关于高质量编程的定义和原则,分享了代码格式、注释、命名规范、控制流程、错误和异常处理五方面的常见编码规范。
1.高质量编程
1.1 简介
高质量:编写的代码正确可靠,简洁清晰
编程原则:简单性、可读性、生产力
1.2 编码规范
1.2.1 代码格式
最好使用gofmt自动格式化代码
1.2.2注释
善于使用注释,如解释代码作用、实现原因、公共符号以及什么情况下代码会出错
1.2.3命名规范
一些命名的常用规范,如要简洁,略缩词全大写(但其位于变量开头且不需要导出时全小写),变量距离其被使用的地方越远,则需要携带越多的上下文信息。
函数名不携带包名的上下文信息,函数尽量简短,当foo的包某个函数返回类型Foo时,可以省略类型信息而不导致歧义。
包只由小写字母组成,不包含大写字母和下划线等字符,简短并包含一定的上下文信息,不要与标准库重名。
即核心目标是降低阅读理解代码的成本,重点考虑上下文信息,设计简洁清晰的名称。
1.2.4控制流程
避免嵌套,保持正常流程清晰,尽量保持正常代码路径为最小缩进。
即处理逻辑最好走直线,避免复杂的嵌套分支,提升代码可维护性与可行性。
1.2.5错误和异常处理
简单错误(只出现一次):优先使用errors.New创建匿名变量来直接表示简单错误。
错误的Wrap和Unwrap:提供了一个error嵌套另一个error的能力,从而生成一个error的跟踪链。
错误判定:判定一个错误是否为特定错误用error.Is
在错误链上获取特定种类的错误,使用error.As
panic/recover
1.3性能优化建议
Benchmark、Slice、Map、字符串处理、空结构体、atomic包的优化方法介绍。
2.性能优化实践
性能分析工具pprof:观察CPU、浏览器查看指标、Heap、goroutine、mutex、block
性能调优案例-业务服务优化。
3.总结
此前未接触过此类实践,课下仍需时间进行复习与整理。