编码规范
代码格式
gofmt:go语言官方提供的工具,能够自动格式化go语言代码为官方统一风格
goimports,实际等于gofmt加上依赖包管理,自动增删依赖的包引用,将依赖包按字母序排序并分类。
注释
注释的作用:解释代码作用,解释代码用途,解释代码实现原因,解释代码出错的情况
公共符号要注释
包中声明的每个公共的符号,常量,变量,函数及结构都需要注释
任何既不显示也不简短的公共功能必须予以注释
无论长短或者复杂程度,库中的函数均需要注释
命名规范
variable
缩略词均大写,当其位于变量开头或不需要引用则不需要大写
变量距离其被使用地方越远,所需要携带的上下文信息越多
function
函数名不携带包名的上下文信息
函数名尽量简短
package
只由小写字母组成。不含大写字母和下划线
简短并包含上下文信息
不与标准库同名
控制流程
-
避免嵌套,保持正常流程清晰
-
尽量保持正常代码路径为最小缩进
优先处理错误情况/特殊情况,尽早返回或继续循环减少嵌套
错误和异常输出
简单错误
优先使用erro.New来创建匿名变量直接表示简单错误
若有格式化需求,则使用fmt.Errorf
错误判定
判定一个错误是否为特定错误,使用error.Is
在错误链上获取特定种类的错误,使用error.As
性能优化建议
性能优化的前提是正确可靠,简洁清晰等因素
性能优化是综合评估,有时候时间和空间效率可能对立
普通应用代码,不一味追求性能