编写优质代码
这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
简介
好的代码,不应该仅实现功能,还应该能够让其他人明白 高质量是什么, 准确可靠,简洁清晰就是高质量的代码
- 边界条件是否考虑到
- 异常的处理
- 是否易读易维护
编程原则: 简单性, 不编写无法理解的代码 可读性: 人类能够简单的维护 生产力: 团队整体工作效率
编码规范
编写高质量的go代码需要遵顼以下几个点
- 代码格式
- 注释
- 命名规范
- 流程控制
- 错误和异常处理
代码格式
代码格式可以使用gofmt goimports进行代码格式的管理.
注释
注释需要按照以下几个点
- 解释代码的作用
- 解释代码如何协程的
- 解释实现的原因
- 解释什么情况会出错
命名规范
变量
简洁胜于冗长, 缩写一般全部大写或者全部小写(不暴露)
在一些小的代码块,比如说for循环, 用i替代index更佳
函数
函数不携带包名上下文信息,尽可能简短
包
包只由小写字母组成,包含一定上下文信息,不和标准库同名,
不使用采用变量名,使用单数而非复数,谨慎使用缩写
流程控制
避免嵌套,以代码路径为最小缩进
错误和异常
简单的错误是仅出现一次的错误,其他地方不需要捕获.
这种情况优先使用errors.New创建匿名变量来表示
尽可能使用error替代panic
panic只在main和init使用
recover只能在defer的函数内使用
编码规范参考
package time
func Now() Time //good
func NowTime Time //bad
//调用的是time.now,很明显比time.nowTime更优
package time
func Parse(s string) (Duration, error)//bad
func ParseDuration(s string) (Duration, error)//good
//返回的是Duration而不是time,所以ParseDuration更佳