这是我参与「第五届青训营」笔记创作活动的第10天
高质量编程,也就是如何写出一段优美的代码,这样的代码首先要能解决我们需要的问题,还要具备可靠性,完备性,可读性,易修改性,简洁,清晰明了等等
实际上,不同人眼中有不同的优美的代码。但是无论用什么语言,原则上是相通的
而如何编写高质量的GO代码,首先是代码格式。推荐使用gofmt自动格式化代码,保证所有的Go代码与官方推荐格式保持一致。
其次是注释,注释应该解释代码的作用、原理、外部因素,以及限制条件
再者是命名,简洁胜于冗长。注意全局变量在名字上需要更多的上下文消息。
而后是控制流程,避免嵌套,优先处理错误/特殊情况,尽早返回或继续来减少嵌套。
还有就是错误和异常处理。
性能优化
benchmem工具,用来性能评估的工具。
slice,预分配,尽可能在使用 make() 初始化切片时提供容量信息,特别是在追加切片时。原切片由大量的元素构成,但是我们在原切片的基础上切片,虽然只使用了很小一段,但底层数组在内存中仍然占据了大量空间,得不到释放,可使用 copy 替代 re-slice。
map预分配内存
字符串拼接,使用strings.builder快
空结构体,节省内存
atomic包,通过硬件实现,效率高于锁