[高质量编码|青训营笔记]

98 阅读2分钟

[高质量编码|青训营笔记]
这是我参加「第五届青训营」伴学笔记的第五天

前言

记录青训营后端专场学习过程,有不足的地方还请大佬指正。 由于本人基础较为薄弱,所以笔记尽可能详细。

高质量编码定义:编写代码能够达到正确可靠、简洁清晰的目标可称之为高质量编码

  • 正确性:各种边界条件是否考虑完备,错误调用能否处理
  • 可靠性:异常情况或者错误的处理策略是否明确,依赖服务出现异常能否处理
  • 简洁:逻辑是否简单,后续调整功能或新增功能能否快速支持
  • 清晰:其他人在阅读理解代码的时候能否清楚明白,重构或修改功能是否不会担心无法预料的问题

编写高质量Go代码

1、代码格式

使用gfmt自动格式化代码

gofmt:Go语言官方提供的工具,能自动格式化Go语言代码为官方统一风格。

使用goimports对依赖包进行管理

goimports:Go语言官方提供的工具,实际等于gofmt加上依赖包管理,自动增删依赖包引用,将依赖包按字母排序并分类。

2、注释

注释作用:

  • 注释应解释代码作用
  • 注释应该解释代码如何做的
  • 注释应该解释代码实现的原因
  • 注释应该解释代码什么情况会出错

3、命名规范

变量命名规范要求:

  • 简洁胜于冗长
  • 缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写(例如使用ServeHTTP而不是ServeHttp)
  • 变量距离其使用的地方越远,越需要携带更多的上下文信息(
  • 全局变量在其名字中需要更多的上下文信息,使得在不同地方可以轻易辨认出其含义

函数命名规范要求:

  • 函数名不携带包名的上下文信息,因为包名和函数名总是成对出现的
  • 函数名尽量简短
  • 当名为foo的包某个函数返回类型Foo时,可以省略类型信息而不导致歧义
  • 当名为foo的包某个函数返回类型为T时,可以在函数名加入类型信息

如下图:由于调用serve方法的时候是http.serve,所以函数名中无需添加包信息 截屏2023-02-13 10.54.54.png