高质量编程与性能调优实战(上) | 青训营笔记

54 阅读1分钟

01 高质量编程

什么是高质量

  • 各种边界条件是否考虑完备
  • 异常情况处理,稳定性保证
  • 易读易维护

如何编写高质量的go代码

代码格式

推荐使用go fmt自动格式化代码

注释

  • 注释应该解释代码作用
  • 注释应该解释代码如何做的
  • 注释应该解释代码实现的原因
  • 注释应该解释代码什么情况会出错
  • 公共符号始终要注释

编码规范

命名规范 / 控制流程 / 错误和异常处理 /

  • error尽可能提供简明的上下文信息链,方便定位问题
  • panic用于真正异常的情况
  • recover生效范围,在当前goroutine的被defer的函数中生效

性能优化建议

go benchmark来测试性能

slice预分配内存

  • 不断向map中添加元素的操作会触发map的扩容
  • 提前分配好空间可以减少内存拷贝和rehash的消耗

使用strings.Builder

使用空结构体节省内存

使用atomic包取代加锁

02 性能调优实战

性能调优原则

  • 要依靠数据不是猜测
  • 要定位最大瓶颈而不是细枝末节
  • 不要过早优化
  • 不要过度优化

性能分析工具pprof