俗話說的好际度,細(xì)節(jié)決定成敗偶摔。Coding過程中的規(guī)范就是這種可以決定成敗的細(xì)節(jié)沉颂,好的規(guī)范可以是代碼的可讀性和可維護(hù)性都得到極大的增強届氢,下面是我個人在工作中對自己的要求和規(guī)范欠窒,主要遵循一致性的原則。
1退子、包(package)
1.1 包的命名
- 全部小寫岖妄。沒有大寫或下劃線。
- 簡短而簡潔寂祥。請記住荐虐,在每個使用的地方都完整標(biāo)識了該名稱。
- 不用復(fù)數(shù)丸凭。例如
net/url
福扬,而不是net/urls
。 - 使用語義比較強的命名惜犀,而不要使用信息量不足铛碑,看不懂的命名。
1.2 包的 import 格式
對包的導(dǎo)入進(jìn)行分組虽界,標(biāo)準(zhǔn)庫和第三方庫
如:
import (
"fmt"
"os"
"github.com/gobwas/ws"
"golang.org/x/sync/errgroup"
)
2汽烦、函數(shù)
1.1 函數(shù)的命名
- 語義明確(看到名字就能知道函數(shù)的作用和功能).
- 駝峰式命名方式.(導(dǎo)出型的首字母必須大寫).
- 盡量使用動詞或者動詞短語.
1.2 函數(shù)的分組與順序
導(dǎo)出的函數(shù)先出現(xiàn)在文件中
-
同一文件中的函數(shù)按照接受者分組
type something struct{ ... } func Run()error{ ... return nil } func newSomething() *something { return &something{} } func (s *something) Cost() { return calcCost(s.weights) } func (s *something) Stop() {...} func calcCost(n []int) int {...}
1.3 函數(shù)內(nèi)部的規(guī)范
-
減少嵌套
for _, v := range data { if v.F1 != 1 { log.Printf("Invalid v: %v", v) continue } v = process(v) if err := v.Call(); err != nil { return err } v.Send() }
優(yōu)先處理了錯誤和特殊情況,盡早的返回來減少嵌套
- 函數(shù)內(nèi)部變量設(shè)置明確的值莉御,盡量使用短變量聲明形式 (
:=
).
s := "hello,world"
- 函數(shù)內(nèi)部盡量縮小變量的作用域
if err := ioutil.WriteFile(name, data, 0644); err != nil {
return err
}//err變量只在這行代碼中有效
- 避免函數(shù)的參數(shù)語意不明
(未完待續(xù)...)