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

91 阅读4分钟

高质量编程与性能调优

目的收获:

1.编写更简洁清晰的代码(便于进行二次编码)
2.熟悉常用Go语言程序优化手段
3.熟悉Go程序性能分析工具
4.了解工程中性能优化的原则和流程

1.高质量编程

高质量编程是指以可维护、可读、健壮和可扩展的方式编写代码,以确保软件在整个生命周期内保持良好的状态。高质量编程的特点包括:

  1. 可读性:代码易于阅读和理解,使用清晰的命名、注释和逻辑结构,使其他开发者能够轻松理解您的代码。
  2. 可维护性:代码结构合理,模块化设计,使得未来的更改和扩展变得容易。这有助于降低维护成本并减少潜在的错误。
  3. 健壮性:代码能够处理各种输入和异常情况,不容易崩溃或产生错误。这需要考虑到边界情况和异常处理。
  4. 可测试性:代码应该容易进行单元测试和集成测试,以确保功能正确性和稳定性。
  5. 一致性:在整个代码库中保持一致的编码风格和设计模式,以提高可维护性和可读性。

高质量:编写的代码正确可靠,简介清晰 (边界条件 异常情况 易读易维护)
简单性 可读性 生产力

编码规范:

一、代码格式

使用gofmt(goimports)自动格式化代码
注释:公共符号需要注释(方法/结构体),不明显或简短需要注释,库内任何函数需要注释
注释的作用:1.解释代码作用,2.解释代码如何做,3.解释代码实现的原因,4.解释代码的出错情况
代码是最好的注释,注释应表达出代码未表达出的部分(上下文信息)

二、命名规范

1.简介>冗长
2.缩略词全大写(HTTP),位于变量开头且不需要导出则小写
3.使用的范围越远,则名字应越长使携带更多上下文信息
4.方法使用的变量带有特定含义则特定命名

包只有小写字母构成,简短并包含上下文信息,不与标准包重名

降低阅读理解代码的成本
重点考虑上下文信息,涉及简介清晰名称

避免嵌套,保持流程清晰
if _{return} else{return} 不如 if_{return} return
优先处理错误的情况,避免循环嵌套

三、性能优化

时间效率和空间效率有时无法同时获得
slice预分配内存/map预分配内存 减少内存拷贝和哈希消耗
字符串处理:使用strings.Builder
内存扩容效率>内存拷贝效率
使用空结构体

2.性能调优实战

性能调优是指通过优化代码和算法,以提高软件的执行效率和响应速度。性能调优的目标是减少资源占用,使程序更快地完成任务。性能调优的关键点包括:

  1. 算法优化:选择适合问题的最优算法,以减少不必要的计算量。不同算法的时间和空间复杂度可能会影响程序的性能。
  2. 数据结构优化:选择合适的数据结构,以便能够高效地执行插入、查找、删除等操作。
  3. 并发和并行:使用多线程、并行计算等技术来充分利用多核处理器,提高程序的并发性和效率。
  4. 内存管理:避免内存泄漏,及时释放不再使用的内存,以减少内存占用。
  5. 代码优化:使用合适的编译器选项和优化工具,消除瓶颈并提高代码的执行速度。
  6. IO操作优化:优化输入输出操作,减少磁盘和网络操作的开销。
  7. 性能测试:通过性能测试和分析工具,找出代码中的瓶颈和潜在问题,以便有针对性地进行优化。

性能调优原则: 1.依靠数据 2.定位最大瓶颈 3.不要过早优化 4.不要过度优化
性能分析工具:pprof