目录
写了长时间的go发现自己还没有系统的整体go的命名规范,这里整理一下
类别 | 方式 | 实例 |
局部变量和函数参数 | 小写字母开头的驼峰命名 | localVariable |
导出的变量名、类型、函数、方法 | 首字母大写的驼峰命名 | ExportedVariable |
包命名 | 小写不使用下划线或者驼峰式、单数形式 | user |
接口命名 | 单个方法名称加上er|etc | Reader |
错误处理 | 错误自负不应该有标点符号和大写字符(除专有名词) | file not found |
常量 | 全大写、下划线分割 | MAX_SIZE |
缩略词 | 全大写或全小写 | HTTP | http |
文件 | 全部使用小写字母,不该用驼峰命名,使用下划线 | htttp_server.go |
1. 包名(Package Names)
- 简洁且有意义:包名应该简短、有意义,通常使用单个单词。如果必须使用多个单词,一般采用简洁的形式,避免使用下划线或驼峰命名法。
- 小写:Go中的包名都是小写的,不使用大写字母或下划线。
- 避免冗余:包名不应该包含重复的词语,比如
http/httpclient
就是不好的命名,应该使用http/client
。
2. 变量名(Variable Names)
- 驼峰命名法:局部变量通常使用驼峰命名法(CamelCase),首字母小写,例如
localVariable
。 - 简短且有意义:变量名应该简短且富有描述性。对于临时变量或局部变量,可以使用短名字,如
i
或x
。 - 避免使用下划线:除非有特别的理由,一般不使用下划线分隔变量名中的单词。
3. 常量名(Constant Names)
- 驼峰命名法或全大写:对于常量名,可以使用驼峰命名法,也可以全部大写并使用下划线分隔单词,尤其是对于公开的(exported)常量。例如,
MaxSize
或MAX_SIZE
。 - 有意义的命名:常量名应该具有描述性,清晰表达常量的用途。
4. 函数名(Function Names)
- 驼峰命名法:函数名使用驼峰命名法,首字母大写表示函数是可导出的(public),首字母小写表示函数是非导出的(private)。例如,
ExportedFunction
是导出的,而internalFunction
是非导出的。 - 动词+名词组合:如果可能的话,函数名应该由动词和名词组合而成,清晰地描述函数的行为和作用对象,例如
CalculateTotal
。
5. 类型名(Type Names)
- 驼峰命名法:类型名使用驼峰命名法,首字母大写表示类型是可导出的,首字母小写表示类型是非导出的。例如,
StructName
是导出的,而internalStruct
是非导出的。 - 名词:类型名通常是名词或名词短语,例如
Customer
或EmployeeList
。
6. 接口名(Interface Names)
- 单个方法的接口名以'er'结尾:如果接口只包含一个方法,则其名字通常以'er'结尾,根据方法名命名,如
Reader
、Writer
、Formatter
等。 - 清晰描述功能:对于包含多个方法的接口,应选择能够清楚描述其功能的名字。
7. 错误处理
error
类型的变量命名:通常使用err
作为错误类型变量的名字。