Go语言高质量编程 | 青训营笔记

79 阅读4分钟

Go语言高质量编程 | 青训营笔记

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

一、Go语言高质量编程

什么是高质量?
编写的代码能够达到正确可靠,简沽清晰的目标可称之为高质量代码。

  • 各种边界条件是否考点完备。
  • 异常情况处理,稳定性保证。
  • 易读易维护。

二、编程原则

实际应用场景千变万化,各种语言的特性和语法各不相同,但是高质量编程遵循的原则是相通的。

简单性:

控制复杂性是计算机编程的本质,因此简单是 Go 的最高目标。并且无论我们编写什么程序,我们都应该追求的代码的简单性。

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

可读性

程序代码应该主要是方便人类阅读,并且可以在机器上运行。代码的阅读次数比编写次数多得多,如一段代码在其生命周期中将被阅读数百次,甚至数千次。并且对所有软件来说,不仅仅是go程序,都是由人类编写的,以供其他人阅读。

  • 代码是写给人看的,而不是机器。
  • 编写可维护代码的第一步是确保代码可读。

生产力

Go 是一种旨在提高生产力的语言,它是为大规模、工业规模的软件设计而构建的。Go通过工具和自定义来强制所有代码都以特定样式格式化,这消除了学习项目特定方言的困难,并有助于发现错误。

因此Go程序员不会花几天时间调试难以理解的编译错误,并且不会在构建复杂的脚本或将代码部署到生产环境中浪费时间,也就不用花很长时间去理解其他人写的代码。

  • 编程更多的是团队合作,因此团队整体的工作效率非常重要。

三、编码规范

注释

注释虽然写起来较为麻烦,但保证代码可读性,为了能让更多的开发者高效的读懂你写的代码,代码的注释必不可少。

  • 单行注释是最常见的注释形式,你可以在任何地方使用以//开头的单行注释
  • 多行注释也叫块注释,均已以/开头,并以/结尾,且不可以嵌套使用,多行注释一般用于包的文档描述或注释成块的代码片段。

go语言自带的godoc工具可以根据注释生成文档,生成可以自动生成对应的网站(golang.org就是使用godoc工具直接生成的),注释的质量决定了生成的文档的质量。

命名规范

命名是代码规范中很重要的一部分,统一的命名规则有利于提高的代码的可读性,好的命名仅仅通过命名就可以获取到足够多的信息。

  • 当命名(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,如:Group1,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出(像面向对象语言中的 public)。
  • 命名如果以小写字母开头,则对包外是不可见的,但是他们在整个包的内部是可见并且可用的(像面向对象语言中的 private )。

控制流程

  • 线性原理,处理逻辑尽量走直线,避免复杂的嵌套分支
  • 正常流程代码沿着屏幕向下移动
  • 提升代码可维护性和可读性
  • 故障问题大多出现在复杂的条件语句和循环语句中

错误和异常处理

  • 简单的错误指的是仅出现一次的错误,且在其他地方不需要捕获该错误
  • 优先使用 errors.New 来创建匿名变量来直接表示简单错误
  • 如果有格式化的需求,使用 fmt.Errorf
  • 错误处理的原则就是不能丢弃任何有返回err的调用,不要使用 _ 丢弃,必须全部处理。接收到错误,要么返回err,或者使用log记录下来
  • 尽早return:一旦有错误发生,马上返回
  • 尽量不要使用panic,除非你知道你在做什么
  • 错误描述如果是英文必须为小写,不需要标点结尾
  • 采用独立的错误流进行处理

四、引用参考:

该文章部分内容来自于以下课程或网页:

字节内部课:Go 语言高质量编程简介

Golang官方编码规范

# Go语言编码规范