高质量编程 | 青训营笔记
一、编程原则
1、简单性
- 以简单清晰的逻辑编写程序
- 复杂的程序难以理解和修改
2、可读性
- 程序是给人读的,要通俗易懂
3、生产力
- 团队整体的效率和生产率非常重要
二、编码规范
1、注释( 公共符号始终要注释)
(1)对于包中声明的公共符号都要注释;例如变量,常量,函数,结构体等
(2)对于任何既不简短也不明显的公共方法必须注释
(3)无论长度和复杂度如何,对于标准库的任何方法都要加以注释
1.1、注释的目的
- 解释代码的上下文
- 解释代码的作用
- 解释代码如何实现的
- 解释代码的出错信息
2、代码格式
- 格式化代码
gofmt包
goimports包
3、命名规范(降低阅读代码的成本)
- 简洁胜于冗长
- 缩略词必须大写(HTTP,HXML等)
- 变量被使用的地方越远,其命名携带的上下文信息必须越多
- 函数名不需要携带包名,因为包名和函数名同时出现(test.AllName)-(包名,函数名)
- 函数名尽量简短
- package中,包名小写
- package 包名一般不带复数
- package包名不与标准库同名
- package包名和文件夹名保持一致
4、控制流程
- 处理逻辑尽量走直线,避免复杂嵌套
- 正常逻辑沿着屏幕往下走流程
- 大多数问题出在复杂的条件语句和循环语句上面
5、错误和异常处理
5.1、简单错误
- 只出现一次的错误,不需要多次捕获错误,直接errors.New 创建匿名变量来输出。
- 需要格式化输出可用 fmt.errorf
5.2、错误判定
- 判定特定错误 error.Is 可以判定判断链上所有错误是否为特定错误
- 定位错误 errors.As 可以确定错误链上错误的位置,方便定位分析错误
5.3、panic
- 业务代码一般不建议panic
- 可以使用捕获recover