高质量编程学习 | 青训营笔记

57 阅读2分钟

高质量编程

编码规范

代码格式

推荐使用gofmt自动格式化代码

注释

1、解释代码作用-适合注释公共符号 image.png

2、解释代码如何做的-适合注释实现过程 image.png

3、解释代码实现的原因-适合解释代码的外部因素 image.png

4、解释代码什么情况会出错-适合解释代码的限制条件 image.png

命名规范

变量

  • 简洁胜于冗长
  • 缩略词全大写,当其位于变量开头且无需导出时,全小写
  • 变量距离被使用的地方越远,需携带更多上下文信息

函数

  • 函数名不携带包名的上下文信息
  • 函数名尽量简短
  • 名为foo的包某个函数返回类型为Foo时,可省略类型信息
  • 名为foo的包某个函数返回类型为T时,可在函数名中加入类型信息

package

  • 只由小写字母组成
  • 简短并包含一定上下文信息
  • 不与标准库同名

以下尽量满足

  • 不适用常用变量名作包名
  • 使用单数
  • 谨慎使用缩写

控制流程

  • 避免嵌套
  • 尽量保证正常代码路径为最小缩进

错误与异常处理

简单错误: 仅出现一次的错误,且在其他地方不需要捕获

优先使用errors.New创建匿名变量直接表示错误。如果有格式化需求,则使用fmt.Errorf

性能优化

Go语言提供的性能测试工具-benchmark

结果中各参数的说明 image.png

字符串处理

拼接字符串,+拼接性能最差,strings.Builder、bytes.Buffer相近,strings.Builder更快

性能调优

调优原则

  • 依靠数据
  • 定位最大瓶颈
  • 不过早优化
  • 不过度优化

性能分析工具pprof

image.png

各指标的含义

image.png Flat==Cum,函数中没有调用其他函数

Flat==0,函数中只有其他函数的调用

web命令-调用关系可视化