slava是作者参与的一个github开源项目,项目的主要的工作是用Go语言构建一个高性能、K-V云数据库。 slava项目的连接。本文作者将梳理在实际的开发中Go语言的编程规范。
1.注释
Good code has lots of comments, bad code requires lots of comments
好的代码有很多注释,不好的代码需要很多注释。
在实际的项目开发中,注释应该做到如下几点:
- 注释应该解释代码的作用
- 注释应该解释代码如何实现
- 注释应该解释代码实现的原因
- 注释应该解释代码什么情况下会出错
2.变量命名规范
- 变量的命名应该简洁明了,避免冗长的命名
- 缩写词应该全大写,但是当其位于变量的开头且不需要导出时,使用全小写
- ServeHTTP而不是ServeHttp
- 可以使用XMLHTTPRequest或者xmlHTTPRequest
- 变量距离它被使用的地方越远,则需要携带的上下文信息越多
- 全局变量在其命名中需要携带更多的上下文信息,使得在不同的地方可以轻易的辨认出其含义
- 在开发项目中,对于一些常量的参数,例如,1,2,3等,尽量避免直接使用这些数字,而应该将其转换成一个全局变量,并在全局变量的命名指示说明该变量的用法。
- 变量的命名应该遵循驼峰命名规范
3.函数命名规范
- 函数名中不应该携带包名,因为函数名和包名通常时成对出现的
- 例如在http包中,函数的命名应该使用Serve而不是ServeHTTP
- 函数名应该简洁明了
4.package命名规范
- 只由小写字母组成。不包含大写字母和下划线
- 简短并包含一定的上下文信息,例如database
- 不要与标准库同名,例如strings包
- 不使用常用的变量名作为包名,例如使用database,而不是使用db
- 使用单数而不是复数
- 谨慎使用缩写,例如使用fmt是在不破坏上下文的情况下比format更加简短
5.import包导入规范
将项目引用的内部包和引用的外部包分开,以空格行分开。内部包在前,外部包在后。
6.项目目录规范
所有的包名称都应该使用同一种命名规则,例如驼峰或者下划线。一个项目中含有多个文件目录,每个文件目录的作用还有使用的方式都一样,要将自己开发的文件,对应到每个正确的包中,便于项目的管理和隔离。
例如internal包下,存放私有应用和库代码。如果一些代码,你不希望在其他应用和库中被导入,可以将这部分代码放在/internal目录下。在引入其它项目internal下的包时,Go 语言会在编译时报错。
pkg目录是Go语言项目中非常常见的目录,我们几乎能够在所有知名的开源项目(非框架)中找到它的身影,例如Kubernetes、Prometheus、Moby、Knative等。该目录中存放可以被外部应用使用的代码库,其他项目可以直接通过import导入这里的代码。所以,我们在将代码库放入该目录时一定要慎重。