Go语言高质量编程 | 青训营笔记

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

一、高质量编程 1.什么是高质量

编写的代码正确可靠、简洁清晰
各种边界是否考虑完备
异常情况处理,稳定性保证
易读易维护

2.编程原则

a.简单性
    消除多余的复杂性,以简单清晰的逻辑编写代码
    不理解的代码无法修复改进
b.可读性
    代码是写给人看的而不是机器
    编写可维护代码的第一步是确保代码可读
c.生产力
    团队整体工作效率非常重要

3.注释

  • 注释应该解释代码作用
  • 注释解释代码是如何做的
  • 注释解释代码实现的原因
  • 注释应该解释代码什么情况会出错
  • 公共符号始终要注释 4.控制流程
  • 避免嵌套,保持正常流程清晰
  • 尽量保持正常代码路径为最小缩进
  • 故障问题大多出现在复杂的条件语句和循环语句中 5.性能优化
  • Benchmark运行测试
  • Slice预分配内存
  • 使用string.Builder优于String.Buffer
  • 使用空结构体节省内存
  • 多线程:使用atomic包 二、性能调优实战 1.性能调优原则
  • 要依靠数据而不是猜测
  • 要定位大瓶颈而不是细枝末节
  • 不要过早优化
  • 不要过度优化 2.性能分析工具pprof
  • 命令 | 命令 | 意义 | | --- | --- | | topN | 查看占用资源最多的函数 | | web | 调用关系可视化 | | Heap | 堆内存 | | goroutine | 协程 | | mutex | 锁 | | block |阻塞|
  • 采样原理和过程
CPU
    操作系统每10ms向进程发送一次SIGPROF信号
    进程每次收到SIGPROG会记录调用堆栈
    写缓冲每100ms读取已经记录的调用栈并写入输入流

3.性能调优

  • 业务服务优化
  • 基础库优化
  • Go 语言本身优化