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

90 阅读3分钟

一、高质量编程

高质量编程就是编写的代码能够达到正确可靠、简洁清晰的高质量代码。高质量代码需要具备三个特点:(1)各种边界条件是否考虑完备;(2)异常情况处理,稳定性保证;(3)易读易维护。编程应该具备以下三个原则:(1)简单性:以简单清晰的逻辑编写代码;(2)可读性:编写可维护代码的第一步是确保代码可读;(3)生产力:保证团队整体效率。

接下来简单介绍一下编码规范,以便提高效率。(1)代码格式:通过使用统一的管理工具,来让所有人的代码看起来一样;(2)注释:注释应该解释代码作用,注释应该解释代码作用,注释应该解释代码实现的原因,注释应该解释代码什么情况会出错,公共符号始终要注释。(3)命名规范:顾名思义,在工程中需要统一的命名风格和命名规则,例如建立地图时可以使用XXXmapmap_XXX等,命名有一定的规则:简洁,简短;缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写;函数名不携带包名的上下文信息,但package包只由小写字母组成,不包含大写字母和字符。

总的来说,编码规范的核心目标就是降低阅读理解代码的成本;重点考虑上下文信息,设计简洁清晰的名称。

再者,需要注意的是控制流程,在设计控制流程时,可以留意以下几点:(1)线性原理,处理逻辑尽量走直线,避免复杂的嵌套分支;(2)正常流程代码沿着屏幕向下移动;(3)提升代码可维护性和可读性;(4)故障问题大多出现在复杂的条件语句和循环语句中。

最后关于错误,error尽可能提供简明的上下文信息链,panic用于真正异常的情况,recover生效范围,在当前goroutine的被defer的函数中生效。

二、性能调优实战

性能调优原则:(1)要依靠数据不是猜测;(2)要定位最大瓶颈而不是细枝末节;(3)不要过早优化与过度优化。性能分析工具:pprof。性能优化建议:(1)Benchmark:go test -bench=. -benchmem;(2)slice预分配内存;(3)大内存未释放;(4)map预分配内存;(5)使用+拼接性能最差,strings.Builder,bytes.Buffer相近,strings.Buffer更快;(6)空结构体;(7)atomic包。

个人认为,性能优化的前提是满足正确可靠、简洁清晰等质量因素,而且性能优化是综合评估,有时候时间效率和空间效率可能对立。但是性能调优可以为软件提供较佳的性能,用于处理系统响应速度太慢等。