这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
高质量编程
正确性:是否考虑各种边界条件,错误的调用是否能够处理
可靠性:异常情况或者错误的处理策略是否明确,依赖的服务出现异常是否能够处理
简洁:逻辑是否简单,后续调整功能或新增功能是否能够快速支持
清晰:其他人在阅读理解代码的时候是否能清楚明白,重构或者修改功能是否不会担心出现无法预料的问题
需要注意的点:
- 代码格式
- 注释
- 命名规范
- 控制流程
- 错误和异常处理
代码格式:
注释:
- 注释应该解释代码作用
- 注释应该解释代码如何做的
- 注释应该解释代码实现的原因
- 注释应该解释代码什么情况会出错
- 注释应该提供代码未表达出的上下文信息
6
命名规范
函数
包名
控制流程
避免嵌套,保持正常流程清晰
尽量保持正常代码路径为最小缩进
即:优先处理错误情况/特殊情况,尽早返回或继续循环来减少嵌套
错误和异常处理
性能优化
Benchmark
Silce优化
- 根据使用场景尽可能在使用make()初始化切片时提供合适的容量。
- 在有已有的切片下,我们可以同它来构建一个切片,而不是重新创建一个。
map优化
- 根据使用场景尽可能在时提供合适的容量。
string优化
strings.Buffer更快的原因
bytes.Buffer转化为字符串时重新申请了一块空间,而strings.Builder直接将底层的[]byte转换成了字符串类型返回
pprof工具
pprof采样过程和原理
CPU
堆
线程/协程
锁