项目名 | 包名
涉及:
- 项目名称,模块的名称,就是在go.mod里面第一行的名称。
- 包名称:也就是项目中的目录名称(文件夹)。
使用全小写作为名称,应使用短命名(单词音节缩写),不与标准库不要冲突。
特殊的:针对于需要共享的库包名应包含完整的仓库路径。
xnetnetx
例:
项目名称: Support Tool Set
缩写无连字符命名: suptoolset
包名称: certificate
简写命名:cert 或 crt
包名称:strings
标准库重名命名:stringsx 或 strx
domain.com
文件名
_test
例:
文件名:user service
连字符缩写: usr_svc.go
测试文件名称:user service test
缩写连字符test结尾: usr_svc_test.go
常量 | 变量
常量和变量命名都使用驼峰法命名,根据是否对外可见来判断是否使用大写字母开头,变量名称应该能够表达其代表意义,长度适中。
特殊的:对于
例:
var simpleValue int
var (
privateMyValue string
PublicMyValue string
)
const simpleConstValue string = "Vaue"
const (
privateConstValue = "private const value"
PublicConstValue = "public const value"
)
结构体 | 接口
结构体、接口命名应该使用名词或名词短语,命名不能与包名称相同。多单词名称应使用驼峰法命名,根据是否对外暴露来决定是否大写首字母。
tag
例:
包名: container
package container
type CommonInterface interface { }
type ContainerBuilder struct {
ExportVal1 string `json:"exportVal1"`
innerVal2 string
}
方法
方法名应该是动词或动词短语,使用驼峰法命名,根据是否对外暴露来决定是否大写首字母。
对于结构体或别名的方法:
this
例:
type User struct { }
func (u *User) getName() string {
return "john"
}
func GetUserById(id int) (*User, error) {
return nil, nil
}
注释
//
例:
// 我要说的话有很多
// 所以我现在分行书写
// 每行注释的内容不应该太多
// 要注意在适当的时候换行
换行与风格
对于单行代码不应该超过 80个字符,超过的应该手动换行,针对于函数调用的场景可以使用下面规则:
,)
例:
func CallThisIsLongNamedFunc(paramter000, paramter111, paramter222 string, pointParameter unsafe.Pointer, memorySpaceLength uint64,lastParameter string);
换行
func CallThisIsLongNamedFunc(
paramter000,
paramter111,
paramter222 string,
pointParameter unsafe.Pointer, memorySpaceLength uint64,
lastParameter string)
实际项目中非特殊情况不应该使用这么长的参数列表和参数名以及函数名称。