高质量编程| 青训营笔记

86 阅读3分钟

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

理解

高质量编程

不足

性能调优(我人给听麻了)

高质量编程

什么是高质量?

编写的代码能够达到正确可靠、简洁清晰的目标为高质量

  • 各种边界条件是否考虑完备
  • 异常情况处理,稳定性保证
  • 易读易维护

编程原则

  • 简单性:消除”多余的复杂性”,以简单清晰的逻辑编写代码。在实际工程项目中,复杂的程序逻辑会让人害怕重构和优化,因为无法明确预知调整造成的影响范围。难以理解的逻辑,排查问题时也难以定位,不知道如何修复。
  • 可读性:可读性很重要,因为代码是写给人看的,而不是机器。在项目不断迭代的过程中,大部分工作是对已有功能的完善或扩展,很少会完全下线某个功能,对应的功能代码实际会生存很长时间。已上线的代码在其生命周期内会被不同的人阅读几十上百次。听课时老师经常说的在课堂上不遵守纪律影响全班同学的时间,难以理解的代码会占用后续每一个程序员的时间。
  • 生产力:编程在当前更多是团队合作,因此团队整体的工作效率是非常重要的一方面。为了降低新成员上手项目代码的成本,Go 语言甚至通过工具强制统一所有代码格式。编码是整个项目开发链路中的一个节点,遵循规范,避免常见缺陷的代码,能够降低后续联调、测试、验证、上线等各个节点的出现问题的概率,就算出现问题也能快速排查定位。

编码规范

  • 代码格式

有两种工具提供

  1. gofmt

Go 语言官方提供的工具,能保证所有的 Go 代码与官方推荐格式保持一致,常见IDE都可以很方便地进行配置,像 Goland 内置了相关功能,直接开启即可在保存文件的时候自动格式化。

  1. goimports

会对依赖包进行管理,自动增删依赖的包引用,按字母序排序分类,具体可以根据团队实际情况配置使用。

  • 注释
  1. 注释应该解释代码作用
  2. 注释应该解释代码如何做的
  3. 注释应该解释代码实现的原因
  4. 注释应该解释代码什么情况会出错
  • 命名规范
  1. 简洁胜于冗长

  2. 缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写。

    1. 例如使用 ServeHTTP 而不是 ServeHttp;
    2. 使用 XMLHTTPRequest 或者 xmlHTTPRequest
  3. 变量距离其被使用的地方越远,则需要携带越多的上下文信息。

    1. 全局变量在其名字中需要更多的上下文信息,使得在不同地方可以轻易辨认出其含义。
  • 控制流程
  1. 避免嵌套,保持正常流程清晰
  2. 尽量保持正常代码路径为最小缩进
  • 错误和异常处理
  1. 简单错误
  2. 错误的 Wrap 和 Unwrap
  3. 错误判定
  4. panic
  5. recover

总结

在工作中,编程是团队合作的工程,简洁清晰的代码让其他人更容易在你的基础上开发,同时出问题的概率更低,大家更乐于与你合作,也让团队更高效。在面试的时候,也有编码环节,利用代码清晰地表达出思路,还能让面试官额外加分。