这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天,今天学的内容是如何用Go编写出高质量的代码,
并且对Go程序优化手段以及Go程序性能分析工具有个初步的了解
课堂内容
一、高质量编程
高质量编程的标准是编写的代码可以达到正确可靠、简洁清晰的目标,包括各种边界条件的处理、异常情况的处理、稳定性的保证以及易读性和易维护性等。
编码规范
- 代码格式
可以使用gofmt
或goimports
来格式化代码,均为go官方提供的工具 - 注释
注释在编写代码过程中起着重要的作用,主要有:解释代码作用,解释代码实现,接口功能、参数解释等。好的代码注释可以给开发人员极大的便利
命名规范
- 变量
1.变量名应尽量简洁
2.缩略词一般使用全大写,但位于变量名头部且不需要导出时,使用全小写
3.全局变量在名字中需要携带更多的上下文信息 - 函数
1.函数名不包含包名的上下文信息
2.当名为foo的包中某个函数的返回类型是Foo时,可以省略类型信息而不产生歧义,当返回的是其余类型时,可以在函数名中加入类型信息 - 包名
1.只由小写字母组成
2.简短且包含一定的上下文信息
3.不使用常用变量名作为包名
二、性能调优
写出高质量的代码后,通常还需要对程序性能进行优化,以达到支持更高并发的效果,在满足正确性、可靠性、健壮性、可读性等质量因素的前提下,提高程序的性能
- benchmark
Go语言提供了支持基准性能测试的benchmark工具 - Slice
slice是go中常用的结构,在使用make()初始化切片时应提供容量信息,特别是在追加切片时 - Map
提前分配好空间可以减少内存拷贝和Rehash的消耗 - 字符串处理
字符串拼接同样支持预分配 - atomic包
在多线程中保证线程安全,可使用atomic操作来代替锁,atomic操作是通过硬件实现的,效率比锁高