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 语言高质量编程简介