高质量编程笔记 高质量的理解:编写的代码能够达到正确可靠、简介清晰的目标 简单性:消除 “多余的复杂性”,以简单清晰的逻辑编写代码,不理解的代 码无法修复改进 可读性:易读易懂;后期维护的基础。 生产力:团队整体工作效率非常重要。 编写高质量代码的规范: (1) 代码格式:推荐使用 gofmt 自动格式化代码。 (2) 注释:作用、如何做的、实现原因,出错场景、公共符号始终要注释。 (3) 命名规范:变量命名:简介胜于元长、缩略词全大写,但当它位于变量 开头且不需要导出时,使用全小写、变量距离其被使用的地方越远,则 需要携带越多的上下文信息。函数名命名:西数名不携带包名的上下文 信息,因为包名和西数名总是成对出现的、西数名尽量简短、当名为 foo 的包某个西数返回类型Foo 时,可以省略类型信息而不导致歧义、当名 为foo 的包某个函数返回类型丁时,可以在函数名中加入类型信息。包 命名规范:只由小写字母组成。不包含大写字母和下划线等宇符、简短 并包含一定的上下文信息、不要与标准库同名、不使用常用变量名作为 包名、使用单数而不是复数、谨慎地使用缩写。 (4) 控制流程和错误和异常处理:避免嵌套,保证正常流程清晰、尽量保持 正常代码路径为最小缩进。简单错误:简单错误指仅出现一次的错误, 且在其他地方不需要捕获该错误、优先使用 errors.New 来创建匿名变量 来直接表示简单错误、如果有格式化需求使用fmt.Errorf。错误判定: 判定一个错误是否为特定错误,使用 error.ls,在错误链上获取特定种类 的错误,使用errors.As;不建议在业务代码中使用 panic,若问题可以被屏蔽或解決,建议使用 panic, 当程序启动阶段发生不可逆转的错误 时,可以在 int 或main 函数中使用 panico Recover 只能在被 defer 的函 数中使用;嵌套无法生效;只在当前 goroutine 生效:defer 的语句是后 进先出;如果需要更多上下文信息,可以recover 后在 10g 中记录当前 的调用栈。