第三节课 | 青训营笔记

104 阅读3分钟

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

1、高质量编程

高质量编程简介

编写的代码正确可靠、简洁清晰

  • 边界条件
  • 异常处理、稳定保证
  • 易读易维护 原则
  • 简单性,消除“多余的复杂性”,以便维护和排查问题
  • 可读性,代码是给人看的
  • 生产力,团队整体工作效率很重要

编码规范

注意代码格式、注释、命名规范、控制流程、错误和异常处理等 使用gofmt,goimports(管理依赖包)
注释解释代码作用、代码如何做、代码实现的原因、代码什么情况会出错(限制条件)代码是最好的注释,注释应该提供代码为表达的上下文信息
命名规范:简洁清晰缩略词全大写,但位于开头且不导出时,全小写
当i或index作用域仅在for循环内,使用i更好
function:函数名可不携带包名上下文信息,因为包名和函数名总是成对出现
package只用小写字母,使用单数而不是复数(尽量)

  • 核心为降低阅读代码的成本,重点考虑上下文信息,设计简洁清晰的名称 控制流程:如果两个分支都包含return,可去掉else,尽量保持正常代码路径为最小缩进(注意嵌套层数),故障问题大多出现在复杂度条件语句和循环中
    错误处理:不建议在业务中使用panic,建议使用error代替panic。recover只能在被defer的函数中使用

性功能优化建议

前提是正确可靠、简洁清晰,有时空间和时间效率对立
slice和map预分配内存,尽可能使用make(),这样时间效率会提升很多,字符串拼接(+)每次都会重新分配内存
多线程:atomic包

捕获.JPG

  • 避免常见性能陷阱,同时不用一味的追求程序的性能,前提:正确可靠、简洁清晰

2、性能调优实战

性能调优简介

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

性能分析工具pprof实战

pprof可以分析性能、分析数据,能够显示在什么地方耗费了多少CPU、Memory

捕获.JPG pprof工具使用如top可以看出性能消耗最大的程序 浏览器打开http://localhost:6060/debug/pprof/ 捕获.JPG flat==cum,函数没有调用其他函数 flat==0,函数中只有其他函数的调用

  • go tool pprof -http=:8081 "http://localhost:6060/debug/pprof/heap"
  • 该命令查看内存消耗 捕获.JPG
  • alloc_objects:程序累计申请对象数
  • alloc_space:程序累计申请内存大小
  • inuse_objects:程序当前持有对象数
  • inuse_space:程序当前占用内存的大小 改pprof命令的后缀:内存heap,协程goroutine,锁mutex,阻塞block

性能优化案例

大业务中比较实用

  • 业务服务优化

捕获.JPG 流程:建立性能评估手段(压测等)->定位问题所在(pprof等)->改造优化