Go编写高质量代码|青训营笔记

95 阅读3分钟

这是我参与「第五届青训营 」笔记创作活动的第3天

一、本堂课重点内容:

  • 了解高质量Go代码的规范
  • 了解性能调优以及相关建议

二、详细知识点介绍:

1.Go语言的代码规范:

高质量的代码应该满足以下的性质:(1)简单性,消除多余无用的代码,以简单清晰的逻辑编写代码,高质量代码应该简洁清晰。(2)可读性,高质量的代码应该有良好的可读性,代码是给人看的,让别人能轻松看懂的代码才是高质量代码。(3)生产力,高质量代码应该遵循规范,通过遵循规范来保证项目在上线过程中降低出错误的可能性。
Go语言官方推出了:gofmt和goimports来保证规范性,goimports还能对依赖包进行管理,能够删除无用的依赖包,并对依赖包进行排序。
注释,是代码规范重要的一环,写出好的注释能帮助别人看懂你的代码,也能为以后自己回忆代码的功能产生帮助。好的注释应该解释代码的作用,代码是如何做的,代码实现的原因以及代码在什么情况下会出错。 命名规范,在Go语言的命名时应该遵守以下的原则:(1)变量命名应该尽可能简洁,简洁的命名优于冗长的命名。(2)缩略词应该全部大写,如果这个接口不暴露给外界使用时,可以使用小写。(3)如果变量距离被使用的地方越远,应携带更多的上下文信息,例如:全局变量,应命名尽可能清晰,不管在什么地方使用全局变量,都能知道它对应的作用。
控制流程,在条件语句和循环语句的书写中,也需要注意对应的规范。首先,控制流程语句中应满足线性原理,避免复杂的分支嵌套,其次,控制流程的代码最好能从头到下沿着屏幕观看,便于可读。最后,不要使用过于复杂的条件或者循环嵌套。 错误处理,使用error时应该提供简明的上下文信息链,便于定位问题。panic这个关键字会使程序崩溃,在平时处理错误中,应尽可能使用error而不是panic。

2.Go语言的性能优化:

性能优化:(1)应该满足正确可靠、清晰简洁等质量因素。(2)性能优化是权衡时空的综合考虑结果。 Go语言提供了benchmark工具来实现基准性能测试,通过使用命令行:go test -bench=.-benchmem来获得基准测试的信息。在利用slice和map等容器的时候,最好进行预分配的操作,避免后期要不断地进行扩容操作,导致消耗大量的性能。在处理字符串时,可以使用strings.Builder来替代传统的利用"+"来连接字符串。因为"+"在每次使用时都会重新分配内存,而strings.Builder可以使用直接扩容的策略,来提高再分配内存的损耗。
使用空结构体来实现占位操作,利用空结构体来实现占位操作不需要消耗内存空间,也就是空结构体为0字节,利用这个特性能够提高空间效率。

三、实践练习例子:

利用了github上的项目,结合pprof工具,改善了github上的项目性能。

四、课后个人总结:

  • 在本节课的学习中,学习到了有关代码规范的知识,以及如何去书写高质量代码,利用相关的工具来实现对性能的优化
  • 对于pprof工具的使用不太熟练