大家好,我是明哥。
由于某些不可抗力,之前该专栏的所有内容都被删除了。因此之后的一段时间内,我会重新发布这些文章,先给已经看过的关注者提个醒。
每个语言都有自己特色的编码规范,学习该语言的命名规范,能让你写出来的代码更加易读,更加不容易出现一些低级错误。
本文根据个人编码习惯以及网络上的一些文章,整理了一些大家能用上的编码规范,可能是一些主流方案,但不代表官方,这一点先声明一下。
1. 文件命名
- 由于 Windows平台文件名不区分大小写,所以文件名应一律使用小写
- 不同单词之间用下划线分词,不要使用驼峰式命名
_test.go
文件名_平台.go
myblog.go
2. 常量命名
目前在网络上可以看到主要有两种风格的写法
- 第一种是驼峰命名法,比如 appVersion
- 第二种使用全大写且用下划线分词,比如 APP_VERSION
这两种风格,没有孰好孰弱,可自由选取,我个人更倾向于使用第二种,主要是能一眼与变量区分开来。
如果要定义多个变量,请使用 括号 来组织。
3. 变量命名
驼峰命名法
- 在相对简单的环境(对象数量少、针对性强)中,可以将完整单词简写为单个字母,例如:user写为u
HasIsCanAllow
- 其他一般情况下首单词全小写,其后各单词首字母大写。例如:numShips 和 startDate 。
apiClient
APIClientURLString
这里列举了一些常见的特有名词:
4. 函数命名
- 函数名还是使用 驼峰命名法
- 但是有一点需要注意,在 Golang 中是用大小写来控制函数的可见性,因此当你需要在包外访问,请使用 大写字母开头
- 当你不需要在包外访问,请使用小写字母开头
另外,函数内部的参数的排列顺序也有几点原则
- 参数的重要程度越高,应排在越前面
- 简单的类型应优先复杂类型
- 尽可能将同种类型的参数放在相邻位置,则只需写一次类型
5. 接口命名
使用驼峰命名法,可以用 type alias 来定义大写开头的 type 给包外访问。
当你的接口只有一个函数时,接口名通常会以 er 为后缀
6. 注释规范
注释分为
6.1 包注释
- 位于 package 之前,如果一个包有多个文件,只需要在一个文件中编写即可
- 如果你想在每个文件中的头部加上注释,需要在版权注释和 Package前面加一个空行,否则版权注释会作为Package的注释。
- 如果是特别复杂的包,可单独创建 doc.go 文件说明
6.2 代码注释
用于解释代码逻辑,可以有两种写法
///* comment */
另外,对于代码注释还有一些更加苛刻的要求,这个看个人了,摘自网络:
- 所有导出对象都需要注释说明其用途;非导出对象根据情况进行注释。
- 如果对象可数且无明确指定数量的情况下,一律使用单数形式和一般进行时描述;否则使用复数形式。
- 包、函数、方法和类型的注释说明都是一个完整的句子。
- 句子类型的注释首字母均需大写;短语类型的注释首字母需小写。
- 注释的单行长度不能超过 80 个字符。
- 类型的定义一般都以单数形式描述:
// Request represents a request to run a command. type Request struct { ...
- 如果为接口,则一般以以下形式描述:
// FileInfo is the interface that describes a file and is returned by Stat and Lstat.
type FileInfo interface { ...
- 函数与方法的注释需以函数或方法的名称作为开头:
// Post returns *BeegoHttpRequest with POST method.
- 如果一句话不足以说明全部问题,则可换行继续进行更加细致的描述:
// Copy copies file from source to target path.
// It returns false and error when error occurs in underlying function calls.
bool returns true if
6.3 特别注释
- TODO:提醒维护人员此部分代码待完成
- FIXME:提醒维护人员此处有BUG待修复
- NOTE:维护人员要关注的一些问题说明
7. 包的导入
单行的包导入
{}
另外根据包的来源,对排版还有一定的要求
- 标准库排最前面,第三方包次之、项目内的其它包和当前包的子包排最后,每种分类以一空行分隔。
- 尽量不要使用相对路径来导入包。
8. 善用 gofmt
除了命名规范外,Go 还有很多格式上的规范,比如
- 使用 tab 进行缩进
- 一行最长不要超过 80 个字符
因此在格式上的问题,你大部分都可以放心交由 gofmt 帮你调整。关于 gofmt 的文章还在写,应该这两天就会更新。你可以过两天再来看看。
参考文章:
好了,今天的文章就到这里了。
若今天的分享对你有帮助,不如点个赞,支持一下?