这是直接总结好的 12 条:
1. 先处理错误避免嵌套
2. 尽量避免重复
3. 先写最重要的代码
4. 给代码写文档注释
5. 命名尽可能简洁
6. 使用多文件包
7. 使用 `go get` 可获取你的包
8. 了解自己的需求
9. 保持包的独立性
10. 避免在内部使用并发
11. 使用 Goroutine 管理状态
12. 避免 Goroutine 泄露
## 最佳实践
这是一篇翻译文章,为了使读者更好的理解,会在原文翻译的基础增加一些讲解或描述。
来在维基百科:
```
"A best practice is a method or technique that has consistently shown results superior
to those achieved with other means"
最佳实践是一种方法或技术,其结果始终优于其他方式。
```
写 Go 代码时的技术要求:
- 简单性
- 可读性
- 可维护性
## 样例代码
需要优化的代码。
```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 语言中的使用》](https://mp.weixin.qq.com/s/fATns17paqbmG8Ikb3ZedA)。
## 先处理错误避免嵌套
```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 条详细讲解,直接前往:[>> 走起](https://mp.weixin.qq.com/s/JD5C2XadveECwdcUtIqoog)
这是一个分享于 的资源,其中的信息可能已经有所发展或是发生改变。
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传