高质量编程与性能调优 | 青训营笔记

127 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第3篇笔记。

1、高质量编程

编写的代码能够达到正确可靠、简介清晰的目标称之为高质量代码。需要考虑各种边界条件是否考虑完备、异常情况处理,稳定性保证、易读易维护。分为简单性、可读性、生产力。

1、1 代码格式

可使用gofmt自动格式化代码。

1、2 注释

注释应该解释代码作用,什么情况会出错等等。并且公众符号始终要注释。接口实现的方法就不需要注释了。

1、3 命名规范

i和index优先使用i,特定含义的命名要符合其意思,函数名不携带上下文信息,例如time.Now()而不是time.NowTime()。命名不要与库重复。

1、4 控制流程

两个分支都包含return语句,应去掉冗余的。保证代码为最小缩进,提升代码的可读性和可维护性。

1、5 错误和异常处理

不建议使用panic,调用函数不包含recover函数会造成程序崩溃。defer采用栈结构存储的,后进先出策略。

1、6 性能优化建议

基准测试工具

go test -bench=. -benchmen
  • 使用slice切片预分配内存,存数据时会优先从缓存取出,减小CPU压力。
  • map预分配内存,提前分配好空间减少内存拷贝和rehash消耗。
  • 字符串处理优先使用strings.Builder,直接使用+号性能最差。
  • 使用空结构体节省内存
  • 对于变量加锁可以使用atomic包,对一段逻辑加锁使用sync.Mutex

2 性能调优

性能分析工具pprof,可视化的性能分析工具。堆内存、CPU、goroutine协程、锁均可以查看使用情况。可以通过分析实际的程序熟悉相关功能,理解基本原理,后续能够更好地解决性能问题,其流程分为建立服务性能评估手段、分析性能数据,定位性能瓶颈、重点优化项改造、优化效果验证。

包括业务服务优化、基础库优化、Go语言优化