Day5 学习笔记 | 青训营

54 阅读2分钟

高质量代码

高质量代码听起来很简单,但在实际工作中写出高质量代码并不容易,需要考虑到边界条件、异常处理与稳定性保证、易读性与可维护性等等

基本编程原则

  • 简单性:逻辑简单清晰
  • 可读性:代码可维护
  • 生产力:团队整体工作效率

具体规范项目

代码格式

  • 推荐使用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包处理多线程锁可以提高效率

学习小结

今天通过学习如何编写高质量代码以及性能优化的基础课程,对于如何编写出优雅又高效的代码有了初步的了解,也明白了代码不仅仅是为了完成眼前的业务逻辑,更重要的是提高可读性、复用性和高效性,让自己和其他人都能够读懂、使用并不断优化,这也是一名优秀程序员的必备素养。