这是我参与「第五届青训营 」笔记创作活动的第2天
一、本堂课重点内容:
- 高质量编程
- 性能调优
二、详细知识点介绍:
-
高质量编程
准确可靠、简洁清晰
- 边界条件考虑完备
- 异常情况处理、稳定性
- 易读易维护
编程原则
- 简单性
- 可读性
- 生产力:团队合作统一规范
编码规范
- 代码格式:gofmt自动格式化代码
- 注释:解释代码作用、如何做的、实现原因、出错情况;公共符号无论长短繁简都应注释
- 命名规范:简洁;缩略词全大写,位于开头且无需导出时全小写;距离使用的地方越远,越多上下文信息
- 控制流程:避免嵌套;最小缩进
- 错误和异常处理:errors提供上下文信息链方便定位问题;尽量少用panic,除不可处理的真正异常情况;recover生效范围仅在当前goroutine的被defer函数中生效
-
性能调优
原则
- 基于数据
- 定位最大瓶颈
- 不要过早优化:如用户体量较小,需求变化较快时先不考虑优化
- 不要过度优化:过度对特异性优化会造成代码修改的困难
性能分析工具:pprof
优化类型
- 业务服务优化
- 基础库优化
- Go语言优化:编译器&运行时优化
三、实践练习例子:
-
pprof使用
运行练习项目
https://github.com/wolfogre/go-pprof-practice
浏览器查看指标
http://localhost:6060/debug/pprof/
采集数据
go tool pprof "http://localhost:6060/debug/pprof/profile?seconds=10"top查看资源消耗最多list查看特定代码行web调用关系可视化
四、课后个人总结:
- 正确性是首位
- 应该遵循统一、可读、易维护的规范进行代码开发
- 性能调优应以数据测试出发,但也要避免过度过早优化