day3 笔记 | 青训营笔记

164 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天

今天知识点比较密集,但萌新鼠鼠表示不求全会,记个笔记留个印象先.

一、本堂课重点内容:

  • 高质量编程
    • 编码规范
    • 性能优化建议
  • 性能调优实战
    • pprof工具实战
    • 企业级调优案例

二、详细知识点介绍:

  • 编码规范

    • 代码格式:可以使用ide自带的格式化工具,默认快捷键是ctrl+alt+L
    • 注释:需要给出额外的信息,不要冗余.注释要做到解释代码的作用,实现的原因,特殊的情况,提供额外的上下文等(至少达到其一).
    • 命名:和package包同名的可以省略(实际上goland也会提醒这个冗余信息);定义越是远离使用的地方,变量名要带有越详细的语义.
    • 控制流:避免嵌套if,能写开的要写开;if-else两个分支都有return的,省掉else的(和我大学软工课的有出入..);错误及时处理.
    • 错误处理:
      • error.New(str)

      • fmt.Errorf(format,...)

      • errors.Is(err,errType) bool

      • errors.As(err,&errTypeInstance) bool

        • 如果要取出具体错误的属性的话用errors.As
      • panic(),recover()

  • 性能优化

    • make slice 尽量提供cap信息.
    • 在原有大切片基础上创建小切片,尽量用copy(dest,src)
    • make(map,size),尽量提供size信息
    • 字符串处理尽量使用string.Builder/bytes.Buffer,因为string是不可变的,[]byte字节流是可变的.
    • 空结构体占位不需要任何内存资源.
    • 变量加锁使用atomic包
  • pprof常用的命令:

三、实践练习例子:

  • 有什么实践举例帮助理解知识点?
    • 小动物的例子.

四、课后个人总结:

  • 本章有什么知识点不容易掌握?
    • 最后一些底层的东西
  • 什么地方容易与其他内容混淆?