高质量编程
高质量:编写的代码能够达到正确可靠、简洁清晰的目标
编程原则
- 简单性:消除“多余的复杂性”,以简单清晰的逻辑编写代码
- 可读性:编写可维护代码的第一步是确保代码可读
- 生产力:团队整体工作效率非常重要
如何编写高质量的Go代码
- 代码格式
使用gofmt自动格式化代码 - 注释
公共符号始终要注释,但不需要注释实现接口的方法
应该包含代码作用,代码是如何做的,代码实现的原因和代码什么情况会出错,注释应该提供代码未表达出的上下文信息 - 命名规范
variable:简洁胜于冗长;缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写;变量距离其被使用的地方越远,则需要携带越多的上下文信息
function: 函数名不携带包名的上下文信息,因为包名和函数名总是成对出现的(比如在time包下,函数名Now比NowTime好);函数名尽量简短 package:只由小写字母组成,不包含大写字母和下划线等字符;不要与标准库同名;尽量使用单数而不是复数,谨慎的使用缩写 - 控制流程
避免嵌套,保持正常流程清晰
尽量保持正常代码路径为最小缩进 - 错误和异常处理
简单错误:优先使用errors.New来创建匿名变量来直接表示简单错误
复杂的错误:错误的wrap和Unwrap
错误判断:判断一个错误是否为特定错误,使用errors.Is;在错误链上获取特定种类的错误,使用errors.As
panic:不建议在业务代码中使用panic;当程序启动阶段发生不可逆转的错误时,可以在init或main函数中使用panic
recover: 只能在被defer的函数中;嵌套无法生效;只在当前goroutine生效;defer的语句是后进先出;如果需要更多的上下文信息,可以recover后在log中记录当前的调用栈
个人思考
通过这节课,我了解到了高质量代码的要求。我更加深刻的意识到了由于每一个项目的完成都离不开一群人的努力,所以代码的可读性非常重要。要保证其他人可以读懂你的代码,这样其他人才可以对你的代码进行优化或者增加一些额外的功能。