这是我参与「第五届青训营」伴学笔记创作活动的第3天
本节课的重点内容如下:
- 了解高质量编程的原则
- 学习高质量编程规范,如编码规范、命名规范等
高质量编程指南
编码规范
1、公共符号(接口、全局变量等)始终需要注释
小tips:
用于实现接口的方法不需要注释
2、注释规范
小结
- 代码是最好的注释,好的代码不需要过多的注释
- 注释应该提供代码中未表达出的上下文信息(背景、原因等)
3、命名规范
1)变量命名
例子
在这个例子中,for循环中的index作用域仅在for循环内部
所以index的额外冗长并不会增加程序的理解,简洁成i会更好
2)函数命名
例子
由于是在http包中,该函数和http包是成对出现的,函数的语义也是与http相关的,所以函数名中可以不包含http的信息
在该例子中,采用Serve()来命名会更好
3)包的命名
小结
- 核心目标:降低阅读理解代码的成本
- 重点是要考虑好上下文的信息,同时也要使名称更加的简洁清晰
4、控制流程规范
1)避免嵌套,保持流程的清晰
2)优先处理错误情况,减少理解成本,降低代码的复杂度
例子
在该代码中,若err不为nil则需要返回,而该代码则先判断它 == nil,这就增加了理解的难度,我们需要往下看代码,直到最后才能知道它将err返回
正确的方法应该是优先处理异常情况,如下述代码,就会更加简洁清晰
5、错误和异常处理
1)简单错误
遇到仅出现一次的错误时,可以使用errors.New() 语句直接创建并返回一个error匿名变量
又或者使用 fmt.Errorf() 来创建具有格式信息的error变量
2)复杂错误
3)panic(适用于真正异常情况)
在实际的业务代码中不建议使用panic,因为若没有recover,它会导致程序崩溃
若问题可以被解决,则建议使用error去代替panic
只有当程序发送不可逆转的错误、以及真正异常情况时,才建议使用panic