高质量代码
高质量代码听起来很简单,但在实际工作中写出高质量代码并不容易,需要考虑到边界条件、异常处理与稳定性保证、易读性与可维护性等等
基本编程原则
- 简单性:逻辑简单清晰
- 可读性:代码可维护
- 生产力:团队整体工作效率
具体规范项目
代码格式
- 推荐使用
gofmt自动格式化代码、也可使用goimports进行依赖管理
注释
- 解释代码作用、如何做的、实现原因、出错原因,解释代码中没有的上下文信息
命名规范
- 简洁胜于冗长
- 缩略词全大写,但是位于变量开头且不需要导出时用全小写
- 变量使用的越多越远,需要的上下文信息就越多
- 函数名不携带包名的上下文信息,尽量简短
- 包名只用小写,尽量简短且不与标准库重名
控制流程
- 避免嵌套,保持流程清晰
- 保持正常路径为最小缩进,也就是错误或特殊的路线先判断
错误和异常处理
- 简单错误可使用
errors.New来创建 - 复杂错误可使用
fmt.Errorf中的%w来关联错误 - 对于特定错误使用
errors.Is来判断错误链,使用errors.As来获取特定错误
性能优化
性能应该如何评估
Go语言提供了支持基准测试的benchmark工具,使用go test -bench=. -benchmem命令
常用性能优化手段
- slice预分配内存,即尽可能在make初始化切片的时候提供容量信息
- 使用
copy来代替re-slice进行复制切片,防止原有切片得不到释放 - map预分配可以减少内存拷贝和Rehash的消耗
- 使用
strings.Builder代替直接用+来拼接字符串,也可以使用Grow方法进一步优化 - 使用
atomic包处理多线程锁可以提高效率
学习小结
今天通过学习如何编写高质量代码以及性能优化的基础课程,对于如何编写出优雅又高效的代码有了初步的了解,也明白了代码不仅仅是为了完成眼前的业务逻辑,更重要的是提高可读性、复用性和高效性,让自己和其他人都能够读懂、使用并不断优化,这也是一名优秀程序员的必备素养。