高质量编程|青训营笔记

89 阅读3分钟

前言

这是我参与【第五届青训营】伴学笔记创作活动第三天,我今天主要听了老师对高质量编程的讲解,我认为老师讲的那些知识对于我们未来的工作来说非常实用。

正文

编程原则

  1. 简单性
  2. 可读性
  3. 生产力(图对整体工作效率很重要)

编码规范

  1. 代码格式: 推荐使用gofmt自动格式化代码
  2. 注释:公共符号始终要注释(包中每个公共符号需要注释,任何既不明显也不简短的公共功能必须予以注释,无论长度或复杂程度如何,对库中任何函数都进行注释)

{

  1. 注释解释代码作用:适合公共符号
  2. 注释解释代码是如何做的:适合解释注释过程
  3. 注释解释代码实现原因:适合代码的外部因素;提供额外上下文
  4. 注释应该解释代码什么时候会出错:解释是和代码的限制条件 }

命名规范

  1. variable:简洁胜于冗长;缩略词全文大写,但其位于变量开头且不需要导出时,使用全小写;变量距离其被使用的地方越远,则需要携带越多的上下文信息;全局变量在其名字中需要更多的上下文信息,使得不同地方可以轻易辨认出含义。
  2. function:含量名不携带上下名信息,因为包名和函数名总是成对出现;函数名尽量简短;当名为foo的包某个函数返回类型Foo时,可以省略信息不同而导致歧义;当名为foo包函数返回值类型T(T不是Foo),可以在函数名中加入类型信息。
  3. package:使用小写字母组成,不包含大小写和下斜线等字符;简短并包含一定的上下文信息;不要与标准库同名;不使用常量名作为包名;使用单数而不是复数;谨慎使用缩写。

控制流程

  1. 尽量保持正常代码路径为最小缩进,优先处理错误和特殊情况,尽早返回或继续循环减少嵌套

错误和异常处理

  1. 简单错误
  2. 错误的wrap和Unwrap
  3. 错误判定:在错误链上获取特定错误使用类型,使用errors.As
  4. panic:不建议在业务代码中使用;若问题可以不被屏蔽或解决时,建议使用error代替pinic;当程序启动阶段发生不可逆转的错误时,可以在int或mian函数中使用panic
  5. vecover:vecover只能在被defer的函数中使用;嵌套中无法生效;只在goroutine中生效;defer的语句后进先出

个人总结

以上是我今天的学习内容,高质量编写代码的好处是可以增加代码的可读性,可以方便后面的人阅读和更改,可以保证程序的稳定运行,解决一些错误,还可以帮助自己成长,不断地认清和改进自己。