go代码规范之高质量编程|青训营笔记

238 阅读4分钟

代码规范之高质量编程|青训营笔记

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记

1.高质量编码的内涵

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

正确性:编码中存在的边界条件考虑全面、编码中的错误调用以及预期之外的输入可以有效处理

可靠性:有明确的策略针对程序中的异常或预料之外的错误、减小下游代码对自身的影响

简洁性:在团队开发过程中,保证自己的代码易读易维护、用简单的逻辑实现功能为后续功能改进提供便利

清晰性:保证自己的代码可以被别人看懂,使他人在进行代码改进中不会有后顾之忧

2.编程原则

简单性:

  • 消除“多余的复杂性”,以简单清晰的逻辑编写代码
  • 不理解的代码无法修复改进

可读性:

  • 代码是给人看的,而不是机器
  • 编写可维护代码的第一步是确保代码可读性

生产力

  • 团队整体工作效率非常重要

3.编码规范

代码格式

gofmt

gofmt是Go语言官方提供的工具,能自动格式化Go语言代码为官方统一风格,常见的IDE都能够方便的配置gofmt,goland已经内置了该功能,配置完成后在保存文件时会自动格式化代码。

goimports

goimports也是Go语言官方提供的工具,是在gofmt的基础上增加了依赖包管理的功能,能够自动增加和删除依赖包的引用、并将依赖包按字母顺序排列。

注释

注释应该解释代码作用,适合对公共符号进行说明,比如一些常量、变量、函数以及结构等

注释应该解释代码如何做的,适合对代码中相对复杂且不明显的逻辑进行说明

注释应该解释代码实现的原因,适合解释代码实现功能之外的因素,这些因素脱离了上下文之后变得难以理解

注释应该解释代码什么时候会出错, 适合解释代码有哪些限制条件,使用方在调用函数时可以有效避开不必要的麻烦

命名规范

变量命名

简洁胜于冗长

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

变量距离其被使用的地方越远,则需要携带越多的上下文

函数命名

函数名不携带包名的上下文信息,因为包名和函数名总是成对存在的

函数名尽量简短

当名为foo的包某个函数返回类型Foo时,可以省略类型信息而不导致歧义

当名为foo的包某个函数返回类型T时(T并不是Foo),可以在函数名中加入类型信息

包命名

只由小写字母组成。不包含大写字母和下划线等字符

简短并包含一定的上下文信息

不能与标准库同名

尽量不使用常用变量名作为包名

尽量使用单数而不是复数

谨慎使用缩写

控制流程

避免嵌套,保持流程清晰

尽量保持正常代码路径为最小缩进

总结

本次笔记记录了第二次课程编程规范部分中比较重要的知识点,包括代码的规范化、注释的规范化以及命名的规范化等等,回想之前做过的一些项目,由于是团队协作的项目,大家由于都不自觉遵守编码规范,导致最后形成的代码不具有高可用性,而在青训营里,第二节次课程就开始讲解关于go语言语言规范,我觉得挺好,以后要认真落实go语言规范,提高代码可读。