cloudaice / learnGo

there are something about Go Useage
MIT License
0 stars 0 forks source link

Golang编码规范 #15

Open cloudaice opened 9 years ago

cloudaice commented 9 years ago

配置$GOPATH环境变量

ls $GOPATH
bin
pkg
src

在src目录下建立要开发的项目,并进行开发,import包的路径都是基于$GOPATH/src目录下的。

源代码文件命名

Go的源代码文件命名使用小写字母命名,如果有多个单词,使用下划线连接

package名字

包的名字要和目录名字相同,名字尽量简短并且要有意义,多极包之间无需继承上一级包的名字。

包引入规范

包引入使用圆括号包起来,统一使用如下格式

import (
    "fmt"
)

当引入多种类型的包的时候,使用空行进行分开,我们开发过程中主要会引用到的包类型有

例如

import (
    "fmt"  // 标准库的包

    "server/util" // 项目内部包

    "github.com/cloudaice/scribe"  // 第三方包
)

不要使用相对路径引入包

变量名称采用驼峰命名法,申明一组变量的时候使用如下方式

var (
    MaxConns int64
    LimitQps    int64
)

代码格式

提交前使用go fmt 对代码进行格式化,并且使用go tool vet 检查代码是否有容易出bug的地方。

channel

当channel用来当作信号通道使用的时候,channel的类型使用 struct{},而不是bool

参数

函数形参使用小写字母开头,尽量每个参数后面跟这个该参数的类型。

注意数组作为参数的时候,是以拷贝的方式传递的,修改数组的值并不会修改原始值

尽量不要使用命名返回参数,避免写出一些隐含bug的代码,除非你对此非常了解

cloudaice commented 9 years ago

定义一个对象的方法的时候,避免使用thisself等通用的命名代替方法的接收者。

cloudaice commented 9 years ago

声明空的slice的时候,使用如下方法:

var v []string

而不是

v := []string{}
cloudaice commented 9 years ago

对于可以导出的名称,都需要加上注释,这样在使用godoc的时候,可以清晰地生成文档。