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

72 阅读2分钟

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

高质量编程

编写的代码能够达到正确可靠,简洁清晰的目标可称之为高质量代码。

编码规范

  • [代码格式] 推荐使用gofmt自动格式化代码
  • [注释]
  1. 注释应该解释代码作用
  2. 注释应该解释代码如何做的
  3. 注释应该解释代码实现的原因
  4. 注释应该解释代码什么情况会出错
  • [命名规范]
  1. 简洁胜于繁琐
  2. 缩略词全大写,但当其位于变量开头且不需要道出时,使用全小写
  3. 变量距离其被使用的地方越远,则需要携带越多的上下文信息
  • [控制流程]
  1. 线性原理,处理逻辑尽量走直线,避免复杂的嵌套分支
  2. 正常流程代码沿着屏幕向下移动
  3. 提升代码可维护性和可读性
  4. 故障问题大多出现在复杂的条件语句和循环语句中
  • [错误和异常处理]
  1. error 尽可能提供简明的上下文信息链,方便定位问题
  2. panic 用于真正异常的情况
  3. recover 生效范围,在当前 goroutine 的被 defer 的函数中生效

性能优化建议

  • 避免常见的性能陷阱可以保证大部分程序的性能
  • 普通应用代码,不要一味地追求程序的性能
  • 越高级的性能优化手段越容易出现问题
  • 在满足正确可靠、简洁清晰的质量要求的前提下提高程序性能

性能调优

  • 性能调优原则
    要依靠数据不是猜测
  • 性能分析工具 pprof
  • 性能调优
    保证正确性
    定位主要瓶颈

调优流程

  1. 定位问题:判端是代码、数据库及中间件配置、操作系统配置、网络配置、硬件配置哪个环节是问题来源,只有找准方向才能找到问题。
  2. 确定原因,具体到算法、共享锁、SQL效率低、索引、线程数、等待超时时间、带宽哪个环节是问题根源,找到问题原因才有可能解决问题。
  3. 确定优化目标和方案确定,例如提高吞吐量,缩短响应时间,提高最大并发,这一步是根据实际业务模型做出的战略调整,注意结合实际,切忌异想天开。
  4. 复测,测试人员使用原来的场景和脚本执行测试,对比测试结果判断是否达到调优目标,没有达到目标就要反复测试贴近目标。
  5. 分析结果,评估目标是否达到和系统性能改善情况,以此来判断优化调整是否可以结束。