Go语言高质量编程
一、高质量编程简介
1.1 定义
高质量:代码正确可靠、简洁清晰
- 边界条件考虑完备
- 异常情况处理,稳定性保证
- 易读易维护
1.2 原则
- 简单性:逻辑简单清晰
- 可读性:确保代码可读,便于功能迭代修改
- 生产力:保证团队整体工作效率
二、编码规范
- 代码格式
- 注释
- 命名规范
- 控制流程
- 错误和异常处理
2.1 代码格式
自动化格式工具:
gofmtgoimports
2.2 注释
注释位置:
- 公共符号( 公共变量、常量、函数、结构 )始终要注释
- 既不明显也不简短的公共功能必须予以注释
- 对外提供的库中的任何函数
- 实现接口的方法不需要注释
注释内容:
- 解释代码作用
- 解释如何代码做的
- 解释代码实现原因( 提供额外上下文,解释外部因素 )
- 解释什么情况会出错( 便于掌握调用时的限制条件 )
2.3 命名规范
variable命名:
- 缩略词全大写,若位于开头则全小写( 如
ServeHTTP、xmlHTTPRequest)- 距离被使用地方越远,需要携带越多上下文信息
function
- 不携带包名的上下文信息
- 尽量简短
- 函数返回类型与包名相同时,可省略类型信息而不导致歧义
package
- 全部小写字母,不包含大写字母、下划线
- 简短并包含一定上下文信息
- 不与标准库同名
- 一般使用单数而非复数
- 不破坏上下文信息的情况下使用缩写
2.4 控制流程
- 避免嵌套,保持正常流程清晰
- 保持正常代码路径为最小缩进,优先处理错误/特殊情况
- 线性原理,处理逻辑尽量走直线,避免复杂的嵌套分支
2.5 错误和异常处理
- 简单错误:使用
errors.New()创建匿名变量来表示 - 复杂错误:
Wrap和Unwrap,或fmt.Errorf() - 错误判定:
errors.Is() - 重大错误:
panic()( 一般用于程序没办法正常工作时,不建议在业务代码中使用 )