一個優良的編碼規範可以讓團隊在開發時擁有一個統一的代碼風格,提升代碼的可讀性,規範性和統一性。
所有代碼都用Gofmt做格式化和優化。
推薦goimport工作,這個工具在gofmt的基礎上新增了自動添加和刪入package的功能。
go get golang.org/x/tools/cmd/goimports
不同的IDE有不同配置:
sublime: http://michaelwhatcott.com/gosublime-goimports/
LiteIDE: 默認支持goimport,可以自行到 configure -> golangfmt -> goimports確認是否勾選。
Goland: Goland -> Preferences -> File Watchers -> 添加goimports。
其他未提到的可以自行到官方網站搜尋相關配置文件。
// Package demo
// Created by tonyk 2019-09-26
// description...
package demo
...
package main
import (
"fmt"
"strings"
"myproject/models"
"myproject/utils"
"github.com/astaxie/beego"
"github.com/go-sql-driver/mysql"
)
// Bad
import "../net"
// Good
import "github.com/go-sql-driver/mysql"
import (
"bar/testutil"
. "foo" // Don't do that.
)
縮進的規範準則為保証最小的代碼縮進和代碼可讀性。
// Bad
if err != nil {
error handling
} else {
normal code
}
// Good
if err != nil {
error handling
return
}
normal code
// Bad
if x, err := f(); err != nil {
error handling
return
} else {
use x
}
// Good
x, err := f()
if err != nil {
error handling
return
}
use x
特殊名詞的縮寫需要按照規範,並且名詞的大小寫一致,例如URLProxy或者urlProxy,不要命名為UrlProxy。
ID的全稱為"Identity Document",不能縮寫為Id,正確的命名方式是appID而不是appId。