这是直接总结好的 12 条:
- 先处理错误避免嵌套
- 尽量避免重复
- 先写最重要的代码
- 给代码写文档注释
- 命名尽可能简洁
- 使用多文件包
- 使用
go get
可获取你的包 - 了解自己的需求
- 保持包的独立性
- 避免在内部使用并发
- 使用 Goroutine 管理状态
- 避免 Goroutine 泄露
最佳实践
这是一篇翻译文章,为了使读者更好的理解,会在原文翻译的基础增加一些讲解或描述。
来在维基百科:
"A best practice is a method or technique that has consistently shown results superior
to those achieved with other means"
最佳实践是一种方法或技术,其结果始终优于其他方式。
写 Go 代码时的技术要求:
- 简单性
- 可读性
- 可维护性
样例代码
需要优化的代码。
type Gopher struct {
Name string
AgeYears int
}
func (g *Gopher) WriteTo(w io.Writer) (size int64, err error) {
err = binary.Write(w, binary.LittleEndian, int32(len(g.Name)))
if err == nil {
size += 4
var n int
n, err = w.Write([]byte(g.Name))
size += int64(n)
if err == nil {
err = binary.Write(w, binary.LittleEndian, int64(g.AgeYears))
if err == nil {
size += 4
}
return
}
return
}
return
}
看看上面的代码,自己先思索在代码编写方式上怎么更好,我先简单说下代码意思是啥:
- 将
Name
和AgeYears
字段数据存入io.Writer
类型中。 - 如果存入的数据是
string
或[]byte
类型,再追加其长度数据。
如果对 binary
这个标准包不知道怎么使用,就看看我的另一篇文章《快速了解 “小字端” 和 “大字端” 及 Go 语言中的使用》。
先处理错误避免嵌套
func (g *Gopher) WriteTo(w io.Writer) (size int64, err error) {
err = binary.Write(w, binary.LittleEndian, int32(len(g.Name)))
if err != nil {
return
}
size += 4
n, err := w.Write([]byte(g.Name))
size += int64(n)
if err != nil {
return
}
err = binary.Write(w, binary.LittleEndian, int64(g.AgeYears))
if err == nil {
size += 4
}
return
}
减少判断错误的嵌套,会使读者看起来更轻松。
针对这 12 条详细讲解,直接前往:>> 走起
