高质量编程 | 青训营笔记

132 阅读2分钟

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

高质量编程

简介

要求编写的代码能够达到正确可靠、简洁清晰的目标。 各种边界条件考虑完备;异常情况处理,保证稳定性;易读易维护。

简单性

消除“多余的复杂性”,以简单清晰的逻辑编写代码;不理解的代码无法修复改进。

可读性

代码是写给人看的,而不是机器。即多写注释,写有价值的注释。

生产力

团队整体工作效率非常重要。为团队协作做好适配。

编码规范

代码格式

使用gofmt自动格式化代码。VScode自带save时格式化代码。

注释

解释代码作用,代码如何做的,代码实现的原因,代码什么情况会出错。

命名规范

variable 变量

简洁胜于冗长;缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写;变量距离被使用的位置越远,则需要携带越多的上下文信息。

func 函数名

不必包含包名信息,返回值和包名相似时省略信息。

package 包名

只用小写字母,不用大写字母和下划线;简单并包含一定的上下文信息;不语言标准库同名。

控制流程

避免嵌套,保持正常流程清晰;尽量保持正常代码路径为最小缩进。总结一下就是减少冗余,尽量优化代码,保持最短最少的代码行数完成功能。

错误和异常处理

简单错误

仅出现一次,且其他地方不需要捕获该错误则使用errors.New来初始化

错误链

使用fmt.Errorf%w来将一个错误关联至错误链中,errors.Unwarp来解除关联

panic

不建议在业务代码中使用panic;调用函数不包含recover会造成程序崩溃;若问题可以被屏蔽或解决,建议使用error代替panic

recover

只能在被defer的函数中使用,嵌套无法生效,只在当前goroutine中生效