Day8-高质量编程1 & 编码规范 | 青训营笔记

93 阅读2分钟

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

1、高质量编程

1.1 简介

  • 编写代码能够达到正确可靠、简介清晰的目标可称之为高质量代码;

    • 边界条件考虑完备;
    • 异常情况处理,稳定性保证;
    • 易读易维护;
  • 编程原则

    • 简单性;(消除多余的复杂性,逻辑简单清晰)
    • 可读性;
    • 生产力;(团队整体工作效率)

1.2 编码规范

1.2.1 代码格式

image.png

1.2.2 注释

  • “好的代码有很多注释,不好的代码需要很多注释”

  • 1、注释应该:

  • 1)解释代码作用;

image.png

  • 2)解释代码如何做的;

image.png

  • 3)解释代码实现的原因;

image.png

  • 4)解释代码什么情况会出错;

image.png

  • 2、公共符号始终要注释

image.png

image.png

1.2.3 命名规范

  • 1、variable变量

image.png

image.png

image.png

  • 2、function函数

image.png

  • 3、package包

image.png

  • 4、小结
    • 核心目标是降低阅读理解代码的成本;
    • 重点考虑上下文信息,设计简洁清晰的名称;

1.2.4 控制流程

  • 1、避免嵌套,保持正常流程清晰

image.png

  • 2、尽量保持正常代码路径为最小缩进
    • (优先处理错误情况,尽早返回或继续循环来减少嵌套)

image.png image.png

  • 3、小结

image.png

1.2.5 错误和异常处理

  • 1、简单错误

image.png

  • 2、错误的Wrap和Unwrap
  • 错误的包提供了一个error嵌套另一个error的能力,生成一个error的跟踪链;

  • fmt.Errorf使用%w关键字来将一个错误wrap至其错误链中;

image.png

  • 3、错误判定

image.png

image.png

  • 4、panic
    • 不建议在业务代码中使用panic;
    • 因为panic发生后,会向上传播至调用栈顶,如果当前goroutine(协程)中所有defer函数都不包含recover就会造成整个程序崩溃;
    • 比error更加严重的错误,其出现说明程序已经无法正常工作;
    • 建议使用error代替panic;

image.png

  • 5、recover
    • 只在当前goroutine的被defer的函数中生效
    • 多个defer,先进后出;
    • defer语句会在函数返回前调用;

image.png

image.png

  • 6、小结

image.png