Golang 實踐經驗
摘要:
編碼風格:https://github.com/golang/go/wiki/CodeReviewComments
編碼規範:程式碼提交前使用 go fmt 格式化程式碼
雖然Go推薦使用比較短的名字來命名,但是不要太短,例如l, a, r,容...
- 編碼風格:ofollow,noindex" target="_blank">https://github.com/golang/go/wiki/CodeReviewComments
- 編碼規範:程式碼提交前使用 go fmt 格式化程式碼
- 雖然Go推薦使用比較短的名字來命名,但是不要太短,例如l, a, r,容易看不懂,尤其是當巢狀層次深了之後。例如RPC/">gRPC實現中的一段程式碼:
frame, err := t.framer.fr.ReadFrame() if err == io.EOF || err == io.ErrUnexpectedEOF { return nil, err }
如果對實現不夠熟悉,很難知道t是什麼,fr是什麼。
- 使用linter: go vet,或者https://godoc.org/golang.org/x/lint
- 使用https://github.com/pkg/errors 代替標準庫中的errors:https://banzaicloud.com/blog/error-handling-go/
- 有逃逸分析,不要濫用指標,否則代價是GC,而GC則是影響Go高效能的常見原因:http://www.agardner.me/golang/garbage/collection/gc/escape/analysis/2015/10/18/go-escape-analysis.html
- 如果是Web應用,儘可能的遵守:https://12factor.net/