Go語言命名規范


一、變量命名規范

    變量命名一般采用駝峰式,當遇到特有名詞(縮寫或簡稱,如DNS)的時候,特有名詞根據是否私有全部大寫或小寫。例子:

var apiClient
var URLString

二、常量命名規范

    同變量規則,力求語義表達完整清楚,不要嫌名字長。
    如果模塊復雜,為避免混淆,可按功能統一定義在package下的一個文件中。

const todayNews = "Hello"
 
// 如果超過了一個常量應該用括號的方法來組織
 
const (
  systemName = "What"
  sysVal = "dasdsada"
)

三、接口命名規范

    單個函數的接口名以 er 為后綴

 

type Reader interface {
    Read(p []byte) (n int, err error)
}
兩個函數的接口名綜合兩個函數名,如:

type WriteFlusher interface {
    Write([]byte) (int, error)
    Flush() error
}
三個以上函數的接口名類似於結構體名,如:

type Car interface {
    Start() 
    Stop()
    Drive()
}

 

四、結構體命名規范

    結構體名應該是名詞或名詞短語,如Account,Book,避免使用Manager這樣的。如果該數據結構需要序列化,如json, 則首字母大寫, 包括里面的字段。

五、receiver命名規范

    golang 中存在receiver 的概念 Receiver 的名稱應該縮寫,應該盡量保持一致, 避免this, super,等其他語言的一些語義關鍵字如下

 

type A struct{}
 
func (a *A) methodA() {
}
func (a *A) methodB() {
  a.methodA()
}

 

六、函數/方法命名規范

 

由於Golang的特殊性(用大小寫來控制函數的可見性),除特殊的性能測試與單元測試函數之外, 都應該遵循如下原則

 

  1. 采用駝峰式。將功能及必要的參數體現在名字中, 不要嫌長, 如updateById,getUserInfo.
  2. 如果包外不需要訪問請用小寫開頭的函數
  3. 如果需要暴露出去給包外訪問需要使用大寫開頭的函數名稱

 

一個典型的函數命名方法如下:

 

// 注釋一律使用雙斜線, 對象暴露的方法
func (*fileDao) AddFile(file *model.File) bool {
  result := db.NewRecord(*file)
  if result {
   db.Create(file)
  }
  return result
}
  
// 不需要給包外訪問的函數如下
func removeCommaAndQuote(content string) string {
  re, _ := regexp.Compile("[\\`\\,]+")
  return strings.TrimSpace(re.ReplaceAllString(content, ""))
}

 

七、注釋命名規范

 

每個包都應該有一個包注釋,位於 package 之前。如果同一個包有多個文件,只需要在一個文件中編寫即可;如果你想在每個文件中的頭部加上注釋,需要在版權注釋和 Package前面加一個空行,否則版權注釋會作為Package的注釋。如:

// Copyright 2009 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package net

 

每個以大寫字母開頭(即可以導出)的方法應該有注釋,且以該函數名開頭。如:

// Get 會響應對應路由轉發過來的 get 請求
func (c *Controller) Get() {
    ...
}

 

大寫字母開頭的方法以為着是可供調用的公共方法,如果你的方法想只在本包內掉用,請以小寫字母開發。如:

func (c *Controller) curl() {
    ...
}

 

注釋應該用一個完整的句子,注釋的第一個單詞應該是要注釋的指示符,以便在 godoc 中容易查找。

 

注釋應該以一個句點 . 結束。

 

八、package命名規范

    包名用小寫,使用短命名,盡量和標准庫不要沖突。包名統一使用單數形式。

九、文件命名規范 

    由於文件跟包無任何關系, 而又避免windows大小寫的問題,所以推薦的文件規范如下:

    文件名應一律使用小寫, 不同單詞之間用下划線分割, 不用駝峰式,命名應盡可能地見名知意。盡量見名思義,看見文件名就可以知道這個文件下的大概內容.其中測試文件以_test.go結尾,除測試文件外,命名不出現_。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM