“这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天”
1、高质量编程
1.1 简介
-
编写代码能够达到正确可靠、简介清晰的目标可称之为高质量代码;
- 边界条件考虑完备;
- 异常情况处理,稳定性保证;
- 易读易维护;
-
编程原则
- 简单性;(消除多余的复杂性,逻辑简单清晰)
- 可读性;
- 生产力;(团队整体工作效率)
1.2 编码规范
1.2.1 代码格式
1.2.2 注释
-
“好的代码有很多注释,不好的代码需要很多注释”
-
1、注释应该:
- 1)解释代码作用;
- 2)解释代码如何做的;
- 3)解释代码实现的原因;
- 4)解释代码什么情况会出错;
- 2、公共符号始终要注释
1.2.3 命名规范
- 1、variable变量
- 2、function函数
- 3、package包
- 4、小结
- 核心目标是降低阅读理解代码的成本;
- 重点考虑上下文信息,设计简洁清晰的名称;
1.2.4 控制流程
- 1、避免嵌套,保持正常流程清晰
- 2、尽量保持正常代码路径为最小缩进
- (优先处理错误情况,尽早返回或继续循环来减少嵌套)
- 3、小结
1.2.5 错误和异常处理
- 1、简单错误
- 2、错误的Wrap和Unwrap
错误的包提供了一个error嵌套另一个error的能力,生成一个error的跟踪链;
fmt.Errorf使用%w关键字来将一个错误wrap至其错误链中;
- 3、错误判定
- 4、panic
- 不建议在业务代码中使用panic;
- 因为panic发生后,会向上传播至调用栈顶,如果当前goroutine(协程)中所有defer函数都不包含recover就会造成整个程序崩溃;
- 比error更加严重的错误,其出现说明程序已经无法正常工作;
- 建议使用error代替panic;
- 5、recover
- 只在当前goroutine的被defer的函数中生效
- 多个defer,先进后出;
- defer语句会在函数返回前调用;
- 6、小结