论什么是高质量编程
- 各种边界条件是否考虑完备
- 异常情况处理,稳定性保证
- 易读易维护
编码原则
实际应用场景千变万化,各种语言的特性和语法各不相同。 但是高质量编程遵循的原则是相通的
简单性
- 消除"多余的复杂性",以简单清晰的逻辑编写代码
- 不理解的代码无法修复改进
可读性
- 代码是给人看的,而不是机器
- 编写可维护代码的第一步是确保代码可读
生产力
- 团队整体工作小效率非常重要
为了写出其高质量的Go代码,需要如下几点。
- 代码规范
- 注释
- 命名规范
- 控制流程
- 错误和异常处理
gofmt自动格式化代码
go语言官方提供的工具,能自动格式化Go语言代码为官方统一风格
在实际工作中,注释是十分重要的。
- 每个公共的符号:变量、常量、函数以及结构都要加注释
- 如何既不明显也不简短的公共功能必须给予注释
- 无论长度或复杂程度如何,对库中的任何函数都必须进行注释
注释应该解释代码的哪些呢?
- 代码作用
- 适合公共符号
- 在公共的变量、常量、函数的部分的时候,要描述其用途。以便在开发的时候不会共混
- 适合公共符号
- 代码如何做的
- 适合注释实现过程
- 在一串代码中,可以描述出其中使用的函数、功能、有何作用
- 适合注释实现过程
- 代码实现的原因
- 适合解释代码的外部因素
- 在一串简短的代码中的时候,别人也许不理解其中为何实现出代码的功能。所以要引出上下文,其解释简短代码的流程
- 适合解释代码的外部因素
- 代码什么情况会出错
- 适合解释代码的限制条件
- 在其函数中的看到更多。一个函数中,一些作者会写下错误及限制的条件,以便程序员不会犯错
- 适合解释代码的限制条件
命名规范
- 缩略词全部大写,但当其位于变量开头不需要导出时,使用全部小写
- 例如使用 ServerHTTP 而不是 ServerHttp
- 变量距离其被使用的地方越远,则需要携带越多的上下文信息
- 全局变量在其名字中需要更多的上下文信息,使得在不同地方可以轻易辨认出其含义
function
函数名不携带包名的上下文信息,因为包名和函数名总是成对出现的
函数名尽量简短
当名为foo的包某个函数返回类型Foo时,可以省略类型信息而不导致歧义
当名为foo的包某个函数返回类型T时(T并不是Foo),可以在函数中加入类型信息
package
只由小写字母组成,不包含大写字母和下划线
简短并包含一定上下文信息
不要与标准库同名