代码规范之高质量编程|青训营笔记
这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
1.高质量编码的内涵
编写的代码能够达到正确可靠、简洁清晰的目标
正确性:编码中存在的边界条件考虑全面、编码中的错误调用以及预期之外的输入可以有效处理
可靠性:有明确的策略针对程序中的异常或预料之外的错误、减小下游代码对自身的影响
简洁性:在团队开发过程中,保证自己的代码易读易维护、用简单的逻辑实现功能为后续功能改进提供便利
清晰性:保证自己的代码可以被别人看懂,使他人在进行代码改进中不会有后顾之忧
2.编程原则
简单性:
- 消除“多余的复杂性”,以简单清晰的逻辑编写代码
- 不理解的代码无法修复改进
可读性:
- 代码是给人看的,而不是机器
- 编写可维护代码的第一步是确保代码可读性
生产力
- 团队整体工作效率非常重要
3.编码规范
代码格式
gofmt
gofmt是Go语言官方提供的工具,能自动格式化Go语言代码为官方统一风格,常见的IDE都能够方便的配置gofmt,goland已经内置了该功能,配置完成后在保存文件时会自动格式化代码。
goimports
goimports也是Go语言官方提供的工具,是在gofmt的基础上增加了依赖包管理的功能,能够自动增加和删除依赖包的引用、并将依赖包按字母顺序排列。
注释
注释应该解释代码作用,适合对公共符号进行说明,比如一些常量、变量、函数以及结构等
注释应该解释代码如何做的,适合对代码中相对复杂且不明显的逻辑进行说明
注释应该解释代码实现的原因,适合解释代码实现功能之外的因素,这些因素脱离了上下文之后变得难以理解
注释应该解释代码什么时候会出错, 适合解释代码有哪些限制条件,使用方在调用函数时可以有效避开不必要的麻烦
命名规范
变量命名
简洁胜于冗长
缩略词全大写,但当其位于变量开头且不需要导出时,使用全小写
变量距离其被使用的地方越远,则需要携带越多的上下文
函数命名
函数名不携带包名的上下文信息,因为包名和函数名总是成对存在的
函数名尽量简短
当名为foo的包某个函数返回类型Foo时,可以省略类型信息而不导致歧义
当名为foo的包某个函数返回类型T时(T并不是Foo),可以在函数名中加入类型信息
包命名
只由小写字母组成。不包含大写字母和下划线等字符
简短并包含一定的上下文信息
不能与标准库同名
尽量不使用常用变量名作为包名
尽量使用单数而不是复数
谨慎使用缩写
控制流程
避免嵌套,保持流程清晰
尽量保持正常代码路径为最小缩进
总结
本次笔记记录了第二次课程编程规范部分中比较重要的知识点,包括代码的规范化、注释的规范化以及命名的规范化等等,回想之前做过的一些项目,由于是团队协作的项目,大家由于都不自觉遵守编码规范,导致最后形成的代码不具有高可用性,而在青训营里,第二节次课程就开始讲解关于go语言语言规范,我觉得挺好,以后要认真落实go语言规范,提高代码可读。