一. 介绍
每种语言都会有基本的语言规范,本文将会介绍Go语言实战建议 Practical Go: Real world advice for writing maintainable Go programs
二. 指导原则
Go语言有以下3点基本指导原则
- 简单性: 简单性是Go语言的最高目标,无论我们编写什么程序,我们都应该同意这一点
它们很简单
。很多情况下我们都害怕遇到一个问题就是我不懂这段代码,不知如何修复,这会导致软件复杂不可靠。
- 可读性: 可读性很重要,因为所有软件不仅仅是Go语言程序都是由人类编写的,供他人阅读。执行软件的计算机则是次要的。代码的读取次数比写入次数多。一段代码在其生命周期内会被读取数百次,甚至数千次。
可读性是能够理解程序正在做什么的关键,编写可维护代码的第一步是确保代码可读。
- 生产力: Go程序员应该觉得他们可以通过Go语言完成很多工作。
快速编译
是Go语言的一个关键特性,也是吸引新开发人员的关键工具,Go语言编译只需要几秒钟。Go程序员相对于C++来说不会花费整天的时间来调试不可思议的编译错误。
三. 标识符
标识符是用来表示名称的单词,例如变量名称、函数名称、方法名称、类型名称、包名称等等。
可读性是良好代码的定义质量,因此选择好名称对于Go代码的可读性至关重要。
- 标识符命名应该清晰而不是简洁
- 好的命名应该简洁: 好的名字不一定是最短的名字,但好的名字不会浪费在无关的东西上。
- 好的命名应该具备描述性: 好的命名会描述变量或常量的应用,而不是它们的内容。好的命名应该描述函数的结果或方法的行为,而不是它们的操作。好的命名应该描述包的目的而非它的内容。
- 好的命名应该是高可读性: 好的命名应该是具有高可读性,能够从名字中推断出使用方式。
- 标识符长度有以下要求
- 短变量名称在声明和上次使用之间的距离很短时效果很好。短变量p,我们只需要看2行代码就可以知道它的用途。
var p = 0 p += count
- 长变量名称需要证明自己的合理性,名称越长需要提供的价值越高。
userCount
长变量一眼就可以知道是用于表示有多人用户
var userCount int
- 请勿在变量名称中包含类型名称。例如不应该这样定义
var usersMap map[string]int
,这个时候后缀的Map可以省略直接定义成这样var users map[string]int
。 - 常量应该描述它们持有的值,而不是该如何使用。
- 对于循环和分支使用单字母变量,参数和返回值使用单个词,函数声明使用多个单词,包的声明使用单个词。
# 循环 for i, v := range items {} # 函数、参数和返回值 func getUserCount(endTime int64) (int64) {} # 包 package http
- 包的名称是调用者用来引用名称的一部分,因此要好好利用这一点。</