Golang的命名规范及最佳实践(推荐!)
作者:LJF_
前言
Golang是一门区分大小写的语言。
命名规则涉及到:变量,常量,全局函数,结构,接口,方法。
一、大小写规范
任何需要对外暴露的名字,都必须以大写字母开头。
当命名以1个大写字母开头时,如:
GetUserName
,那么使用这种形式的标识符的对象,就可以被外部包的代码使用(外部需要先导入这个包),这个过程也被称为导出。不需要对外暴露的名字,以小写字母开头。
当命名以1个小写字母开头时,如:
getUserName
,那么该对象就是对包外不可见的,但是在整个包的内部都是可见并且可用的。
二、包的命名规范
- 保持包名称和目录名称一致。即
package main
对应main
的文件夹目录 - 尽量采用一些简短直观的包名称,不与标准库产生冲突。
- 包名称一般为全小写的单词,不使用下划线或者混合的大小写。
示例:
package dao package service
三、文件的命名规范
- 尽量采用一些简短直观的文件名称。
- 文件名称一般为小写的单词,使用下划线分隔各个单词。
示例:
customer_dao.go
四、结构体的命名规范
- 命名简短直观。
- 一般采用驼峰命名法,首字母根据访问情况控制大写或小写。
struct
的声明和初始化采用多行书写。
示例:
type CustomerOrder struct { Name string Address string } order := CustomerOrder{"Tom", "北京市海淀区"}
五、接口/函数的命名规范
- 命名简短直观。
- 和结构体类似,一般采用驼峰命名法,首字母根据访问情况控制大写或小写。
- 以大写字母开头的函数(公有,包外可见),应该添加注释。
- 声明和初始化采用多行书写。
- 单个接口/函数的命名一般以
er
结尾作为后缀,例如:Reader, Writer
。
示例:
type Reader interface { Read(p []byte) (n int, err error) }
六、变量的命名规范
命名简短直观。
和结构体、函数/接口类似,一般采用驼峰命名法,首字母根据访问情况控制大写或小写。
如果遇到特有名词(缩写或简称,如:
DNS
),需要遵循以下规则:若变量为私有,且特有名词为首个单词,则全部小写,如:
appService
。若变量为公有,则特有名词全部大写。
若变量为
bool
类型,则名称以Has, Is, Can, Allow
开头。
示例:
var isExit bool var hasConflict bool var canManage bool var allowGitHook bool
七、常量的命名规范
- 命名简短直观。
- 单词使用全部大写,并使用下划线分词。
- 若为枚举类型的常量,则需要先创建相应类型。
示例:
type Scheme string //为枚举类型常量创建相应类型 const { HTTP Scheme = "http" HTTPS Scheme = "https" }
八、错误处理的命名规范
错误处理的原则:
不能丢弃任何有返回err的调用,不使用_丢弃,必须全部处理。
接收到错误时,要么返回err,或者使用log记录下来,尽早return。
一旦有错误发生,马上返回,尽量不使用panic,除非知道错误处理时应该做什么。
如果用英文进行错误描述,必须为小写,不需要使用标点结尾,采用独立的错误流进行处理。
示例:
// 正确写法 // 若产生错误 if err != nil { // 进行错误处理 return //或者continue } // 若没产生错误,则进入正常代码 // 错误写法 if err != nil { // 进行错误处理 return //或者continue } else { // 正常代码 }
九、单元测试的命名规范
- 一般情况下,测试用例函数名称以
Test
开头,如:TestExample
。 - 每个重要的函数都要首先编写测试用例,测试用例和正规代码一起提交,方便进行回归测试。
- 单元测试文件名,一般使用小写单词,用下划线连接,命名示例为:
example_test.go
。
十、系统的预定义标识符
除了保留关键字之外,Golang语言系统还提供了36个预定义标识符,包括基础数据类型和系统内嵌函数(不需要引入包,可以直接使用的函数)。
预定义标识符 | 预定义标识符 | 预定义标识符 | 预定义标识符 | 预定义标识符 | 预定义标识符 |
---|---|---|---|---|---|
append | bool | byte | cap | close | complex |
complex64 | complex128 | uint16 | copy | false | float32 |
float64 | imag | int | int8 | int16 | uint32 |
int32 | int64 | itoa | len | make | new |
nil | panic | uint64 | println | real | |
recover | string | true | uint | uint8 | uintprt |
总结
到此这篇关于Golang的命名规范及最佳实践的文章就介绍到这了,更多相关Golang命名规范内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!