这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
高质量编程
简介
要求编写的代码能够达到正确可靠、简洁清晰的目标。 各种边界条件考虑完备;异常情况处理,保证稳定性;易读易维护。
简单性
消除“多余的复杂性”,以简单清晰的逻辑编写代码;不理解的代码无法修复改进。
可读性
代码是写给人看的,而不是机器。即多写注释,写有价值的注释。
生产力
团队整体工作效率非常重要。为团队协作做好适配。
编码规范
代码格式
使用gofmt自动格式化代码。VScode自带save时格式化代码。
注释
解释代码作用,代码如何做的,代码实现的原因,代码什么情况会出错。
命名规范
variable 变量
简洁胜于冗长;缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写;变量距离被使用的位置越远,则需要携带越多的上下文信息。
func 函数名
不必包含包名信息,返回值和包名相似时省略信息。
package 包名
只用小写字母,不用大写字母和下划线;简单并包含一定的上下文信息;不语言标准库同名。
控制流程
避免嵌套,保持正常流程清晰;尽量保持正常代码路径为最小缩进。总结一下就是减少冗余,尽量优化代码,保持最短最少的代码行数完成功能。
错误和异常处理
简单错误
仅出现一次,且其他地方不需要捕获该错误则使用errors.New来初始化
错误链
使用fmt.Errorf中%w来将一个错误关联至错误链中,errors.Unwarp来解除关联
panic
不建议在业务代码中使用panic;调用函数不包含recover会造成程序崩溃;若问题可以被屏蔽或解决,建议使用error代替panic
recover
只能在被defer的函数中使用,嵌套无法生效,只在当前goroutine中生效