Golang之路---04 项目管理——编码规范

本文根据个人编码习惯以及网络上的一些文章,整理了一些大家能用上的编码规范,可能是一些主流方案,但不代表官方

1. 文件命名

  • 由于 Windows平台文件名不区分大小写,所以文件名应一律使用小写

  • 不同单词之间用下划线分词,不要使用驼峰式命名

  • 如果是测试文件,可以以 _test.go 结尾

  • 文件若具有平台特性,应以 文件名_平台.go 命名,比如 utils_ windows.go,utils_linux.go,可用的平台有:windows, unix, posix, plan9, darwin, bsd, linux, freebsd, nacl, netbsd, openbsd, solaris, dragonfly, bsd, notbsd, android,stubs

  • 一般情况下应用的主入口应为 main.go,或者以应用的全小写形式命名。比如MyBlog 的入口可以为 myblog.go

2. 常量命名
目前在网络上可以看到主要有两种风格的写法

  • 第一种是驼峰命名法,比如 appVersion

  • 第二种使用全大写且用下划线分词,比如 APP_VERSION

这两种风格,没有孰好孰弱,可自由选取,我个人更倾向于使用第二种,主要是能一眼与变量区分开来。

如果要定义多个变量,请使用 括号 来组织。

const (
    APP_VERSION = "0.1.0"
  CONF_PATH = "/etc/xx.conf"
)

自构建的枚举类型应该从 1 开始,除非从 0 开始是有意义的
eg:

// Bad
type Operation int

const (
  Add Operation = iota
  Subtract
  Multiply
)

// Good
type Operation int

const (
  Add Operation = iota + 1
  Subtract
  Multiply
)

3. 变量命名
和常量不同,变量的命名,开发者们的喜好就比较一致了,统一使用 驼峰命名法

  • 在相对简单的环境(对象数量少、针对性强)中,可以将完整单词简写为单个字母,例如:user写为u

  • 若该变量为 bool 类型,则名称应以 Has, Is, Can 或 Allow 开头。例如:isExist ,hasConflict 。

  • 其他一般情况下首单词全小写,其后各单词首字母大写。例如:numShips 和 startDate 。

  • 若变量中有特有名词(以下列出),且变量为私有,则首单词还是使用全小写,如 apiClient。

  • 若变量中有特有名词(以下列出),但变量不是私有,那首单词就要变成全大写。例如:APIClient,URLString

  • 函数内使用短变量声明(海象运算符 :=)。函数外使用长变量声明(var 关键字),var 关键字一般用于包级别变量声明,或者函数内的零值情况。

  • 如果有可能,尽量缩小变量的作用范围。
    eg:

// Bad
err := ioutil.WriteFile(name, data, 0644)
if err != nil {
 return err
}
// Good
if err := ioutil.WriteFile(name, data, 0644); err != nil {
 return err
}

4. 函数命名
函数名还是使用 驼峰命名法

但是有一点需要注意,在 Golang 中是用大小写来控制函数的可见性,因此当你需要在包外访问,请使用大写字母开头

当你不需要在包外访问,请使用小写字母开头

另外,函数内部的参数的排列顺序也有几点原则

  • 参数的重要程度越高,应排在越前面

  • 简单的类型应优先复杂类型

  • 尽可能将同种类型的参数放在相邻位置,则只需写一次类型

函数、方法的顺序一般需要按照依赖关系由浅入深由上至下排序,即最底层的函数出现在最前面。

5.善用 gofmt
除了命名规范外,Go 还有很多格式上的规范,比如

  • 使用 tab 进行缩进

  • 一行最长不要超过 80 个字符

  • 强制左大括号不换行。

  • 强制所有的运算符和操作数之间要留空格。

6. 结构体定义规范
嵌入结构体中作为成员的结构体,应位于结构体内的成员列表的顶部,并且必须有一个空行将嵌入式成员与常规成员分隔开。

7. 工程化要求
建议你在 IDE 中集成下述工具插件:

  • 提交代码时,必须使用 gofmt 工具格式化代码。注意,gofmt 不识别空行,因为 gofmt 不能理解空行的意义。
  • 提交代码前,必须使用 goimports 工具检查导入。
  • 提交代码时,必须使用 golint 工具检查代码规范。
  • 提交代码前,必须使用 go vet 工具静态分析代码实现。

你可能感兴趣的:(Golang,golang,开发语言,后端)