值得参考的golang语言开发规范:Uber Go 语言编码规范,一些优秀的技巧可以提升代码的质量、避免代码缺陷和bug漏洞
warning:
这篇文章距离上次修改已过193天,其中的内容可能已经有所变动。
以下是一些关键点摘录自Uber Go语言编码规范:
- 包名应该尽可能简短,并具有描述性,应该使用驼峰式命名法(PascalCase),但是为了避免和Go的内建名字冲突,包名应该尽可能包含独特的前缀。
package mypackage
- 函数名应该使用驼峰式命名法(PascalCase)。
func MyFunction() {
// ...
}
- 变量名应该使用驼峰式命名法(PascalCase),但是局部变量应该使用小写字母开头的驼峰式命名法(camelCase)。
var MyVariable int
var myVariable int
- 常量名应该使用全部大写字母,并且使用下划线分隔。
const MyConstant = "Value"
- 对于接口命名,一般使用able后缀,如
Reader
,Writer
,Formatter
等。
type Reader interface {
Read(p []byte) (n int, err error)
}
- 错误类型的名字应该是形容词结尾,例如
Error
,Invalid
,Cannot
等。
type Error struct {
// ...
}
- 指针接收者应该用于 修改接收者对象的方法。
func (p *Point) ScaleBy(factor float64) {
p.X *= factor
p.Y *= factor
}
- 值接收者用于不需要修改接收者对象的方法。
func (p Point) Add(q Point) Point {
return Point{p.X + q.X, p.Y + q.Y}
}
- 接口实现时,如果有指针或者值接收者的方法重载,应该同时提供两种方法。
func (p *Point) Add(q Point) Point {
p.X += q.X
p.Y += q.Y
return *p
}
func (p Point) Add(q Point) Point {
p.X += q.X
p.Y += q.Y
return p
}
- 应该使用
err != nil
来检查错误,而不是err == nil
。
if err != nil {
// Handle error.
}
这些规范和技巧可以帮助Go语言开发者写出更加清晰、一致和可维护的代码。
评论已关闭