高质量编程与性能调优实战|青训营

69 阅读3分钟

一、高质量编程

1. 简介

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

各种边界条件是否考点完备。 异常情况处理,稳定性保证。 易读易维护。

2. 编程原则

实际应用场景千变万化,各种语言的特性和语法各不相同,但是高质量编程遵循的原则是相通的。编写高质量代码实际上可以遵循一个统一的原则:保证代码的简单性、可读性,提高团队生产力。

简单性

消除“多余的复杂性”,用最简单清晰的逻辑编写代码。 不理解的代码无法修复改进。 可读性

代码是写给人看的,而不是机器。 编写可维护代码的第一步是确保代码可读。 生产力

编程更多的是团队合作,因此团队整体的工作效率非常重要。

3. 编码规范

如何编写高质量的 Go 代码?

代码格式

推荐使用 Gofmt 自动格式化代码。 Gofmt:Go 语言官方提供的工具,能自动格式化 Go 语言代码为官方统一风格,常见 IDE 都支持方便的配置。 Goimports:也是 Go 语言官方提供的工具,实际等于 Gofmt 加上依赖包管理,自动增删依赖的包引用、将依赖包按字母序排序并分类。 注释

注释应该解释代码作用。 注释应该解释代码如何做的。 注释应该解释代码实现的原因。 注释应该解释代码什么情况会出错。 命名规范

变量的命名:简洁胜于冗长。缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写。变量距离其被使用的地方越远,需要携带的信息就需要越多。 函数的命名:函数名不必携带包名的上下文信息。函数名需要尽可能地简短。当函数返回类型与包名相同时,可以省略类型信息。 包的命名:包名仅由小写字母组成。包名简短且包含一定的上下文信息。不要与标准库问名。

4. 控制流程

线性原理,处理逻辑尽量走直线,避免复杂的嵌套分支。 正常流程代码沿着屏幕向下移动。 提升代码可维护性和可读性。 故障问题大多出现在复杂的条件语句和循环语句中。

5. 错误和异常处理

error 尽可能提供简明的上下文信息链,方便定位问题。 panic 用于真正异常的情况。 recover 生效范围,在当前 goroutine 的被 defer 的函数中生效。

6. 性能优化建议

性能优化的前提是满足正确可靠、简洁清晰等质量因素。 性能优化是综合评估,有时候时间效率和空间效率可能对立。 针对 Go 语言特性,介绍 Go 相关的性能优化建议。

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

二、性能调优实战

1. 简介

性能调优原则。

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

2. 性能分析工具 pprof

熟练使用 pprof 工具排查性能问题并了解其基本原理。

3. 性能调优

  • 保证正确性。
  • 定位主要瓶颈。