Go高质量编程及编码规范 | 青训营笔记

52 阅读3分钟

高质量编程简介及编码规范 ----- 错误和异常处理

简单错误 & 简单的错误指的是仅出现一次的错误,且在其他地方不需要捕获该错误 & 优先使用 errors.New 来创建匿名变量来直接表示简单错误 & 如果有格式化的需求,使用 fmt.Errorf

----- 错误的Warp 和 Unwarp & 对于复杂的错误,有时候并不能简单描述,错误的 Wrap(包装) 提供了一个error嵌套另一个error的能力,生成一个error的 跟踪链,同时结合错误的判定方法来确认调用链中是否有关注的错误出现 & 在 fmt.Errorf 中使用 %w 关键字来将一个错误关联至其错误链中。

高质量的定义:

编写的代码能够达到正确可靠、简洁清晰的目标。

· 正确性:是否考虑各种边界条件,错误的调用是否能够处理

· 可靠性:异常情况或者错误的处理策略是否明确,依赖的服务出现异常是否能够处理

· 简洁:逻辑是否简单,后续调整功能或新增功能是否能够快速支持

· 清晰:其他人在阅读代码的时候是否能清楚明白,重构或修改功能是否不用担心出现无法预料的问题

高质量的代码并不仅仅局限于哪一门语言或者哪一个工程,而应当是作为一个coder的基本素养。

· 简单性:消除多余的复杂性,以简单清晰的逻辑编写代码,因为不好理解的代码无法修复改进

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

· 生产力:团队整体的工作效率非常重要,为了减低新员工上手项目代码的成本,Go语言甚至通过工具强制统一所有代码格式。

如何编写高质量的Go代码?需要注意:

代码格式:推荐使用gofmt自动格式化代码

o 注释应该解释代码作用

o 注释应该解释代码如何做的

o 注释应该解释代码实现的原因

o 注释应该解释代码什么情况会出错

o 公共符号始终要注释

命名规范:

简洁胜于冗长

缩略词全大写,但当期位于变量开头且不需要导出时,使用全小写

§ 使用ServeHTTP而不是ServeHttp

§ 使用XMLHTTPRequest而不是xmlHTTPRequest

变量距离其被使用的地方越远,则需要携带越多的上下文信息

函数名不携带包名的上下文信息且尽量简短

package名只由小写字母组成

控制流程:

o 避免嵌套,保持正常流程清晰,例如去掉不必要的else

o 尽量保持正常代码路径为最小缩进,能对称就对称

o 故障问题的大多出现在复杂的条件语句和循环语句中,尽量化简

错误和异常处理:

简单错误:指仅出现一次的错误,且在其他地方不需要捕获该错误

优先使用errors.New来创建匿名变量来直接表示简单错误

如果有格式化需求,请使用fmt.Errorf