一、本堂课重点内容:
- 高质量编程与性能调优实践
- 性能优化指南
- 性能调优实战案例
二、详细知识点介绍:
高质量编程与性能调优实践
编码规范
-
代码格式
使用gofmt格式化代码,使用goimports工具进行包导入管理(可以自动导入包,去除不适用的包,并按字典序排列,节省时间)
-
注释
- 代码是最好的注释
- 注释应该提供代码未表达出的上下文信息
-
命名规范
- 核心目标是降低阅读理解代码的成本
- 重点考虑上下文信息,设计简洁清晰的名称
-
控制流程
- 线性原理,处理逻辑尽量走直线,避免复杂的嵌套分支
- 正常流程代码沿着屏幕向下移动
- 提升代码可维护性和可读性
- 故障问题多出在复杂的循环语句和条件语句中
-
错误和异常处理
- error尽可能提供简明的上下文信息链,方便定位问题
- panic用于真正异常的情况
- recover生效范围,在当前goroutine的被defer函数中生效
性能优化指南
-
使用Benchmark来衡量性能表现
-
Slice预分配内存以减少内存申请,提高运行速度
-
Slice使用copy替代re-slice来减少内存占用,节省内存空间
-
Map预分配内存
-
字符串处理使用strings.Builder
-
空结构体节约内存,利用其语义特征,同时不耗费资源(利用map实现set)
-
atomic包原子化操作提高性能
性能调优实战案例
业务服务优化
- 服务:能单独部署,承载一定功能的程序
- 依赖:Service A的功能实现依赖Service B的响应结果,称为Service A依赖Service B
- 调用链路:能支持一个接口请求的相关服务集合及其相互之间的依赖关系
- 基础库:公共的工具包、中间件
三、课后个人总结:
本节课主要简要介绍了高质量编程的定义和原则,分享了代码格式、注释、命名规范、控制流程、错误和异常处理五方面的常见编码规范。