Golang的命名規(guī)范及最佳實踐(推薦!)
前言
Golang是一門區(qū)分大小寫的語言。
命名規(guī)則涉及到:變量,常量,全局函數(shù),結(jié)構(gòu),接口,方法。
一、大小寫規(guī)范
任何需要對外暴露的名字,都必須以大寫字母開頭。
當命名以1個大寫字母開頭時,如:
GetUserName,那么使用這種形式的標識符的對象,就可以被外部包的代碼使用(外部需要先導入這個包),這個過程也被稱為導出。不需要對外暴露的名字,以小寫字母開頭。
當命名以1個小寫字母開頭時,如:
getUserName,那么該對象就是對包外不可見的,但是在整個包的內(nèi)部都是可見并且可用的。
二、包的命名規(guī)范
- 保持包名稱和目錄名稱一致。即
package main對應main的文件夾目錄 - 盡量采用一些簡短直觀的包名稱,不與標準庫產(chǎn)生沖突。
- 包名稱一般為全小寫的單詞,不使用下劃線或者混合的大小寫。
示例:
package dao package service
三、文件的命名規(guī)范
- 盡量采用一些簡短直觀的文件名稱。
- 文件名稱一般為小寫的單詞,使用下劃線分隔各個單詞。
示例:
customer_dao.go
四、結(jié)構(gòu)體的命名規(guī)范
- 命名簡短直觀。
- 一般采用駝峰命名法,首字母根據(jù)訪問情況控制大寫或小寫。
struct的聲明和初始化采用多行書寫。
示例:
type CustomerOrder struct {
Name string
Address string
}
order := CustomerOrder{"Tom", "北京市海淀區(qū)"}
五、接口/函數(shù)的命名規(guī)范
- 命名簡短直觀。
- 和結(jié)構(gòu)體類似,一般采用駝峰命名法,首字母根據(jù)訪問情況控制大寫或小寫。
- 以大寫字母開頭的函數(shù)(公有,包外可見),應該添加注釋。
- 聲明和初始化采用多行書寫。
- 單個接口/函數(shù)的命名一般以
er結(jié)尾作為后綴,例如:Reader, Writer。
示例:
type Reader interface {
Read(p []byte) (n int, err error)
}
六、變量的命名規(guī)范
命名簡短直觀。
和結(jié)構(gòu)體、函數(shù)/接口類似,一般采用駝峰命名法,首字母根據(jù)訪問情況控制大寫或小寫。
如果遇到特有名詞(縮寫或簡稱,如:
DNS),需要遵循以下規(guī)則:若變量為私有,且特有名詞為首個單詞,則全部小寫,如:
appService。若變量為公有,則特有名詞全部大寫。
若變量為
bool類型,則名稱以Has, Is, Can, Allow開頭。
示例:
var isExit bool var hasConflict bool var canManage bool var allowGitHook bool
七、常量的命名規(guī)范
- 命名簡短直觀。
- 單詞使用全部大寫,并使用下劃線分詞。
- 若為枚舉類型的常量,則需要先創(chuàng)建相應類型。
示例:
type Scheme string //為枚舉類型常量創(chuàng)建相應類型
const {
HTTP Scheme = "http"
HTTPS Scheme = "https"
}
八、錯誤處理的命名規(guī)范
錯誤處理的原則:
不能丟棄任何有返回err的調(diào)用,不使用_丟棄,必須全部處理。
接收到錯誤時,要么返回err,或者使用log記錄下來,盡早return。
一旦有錯誤發(fā)生,馬上返回,盡量不使用panic,除非知道錯誤處理時應該做什么。
如果用英文進行錯誤描述,必須為小寫,不需要使用標點結(jié)尾,采用獨立的錯誤流進行處理。
示例:
// 正確寫法
// 若產(chǎn)生錯誤
if err != nil {
// 進行錯誤處理
return //或者continue
}
// 若沒產(chǎn)生錯誤,則進入正常代碼
// 錯誤寫法
if err != nil {
// 進行錯誤處理
return //或者continue
} else {
// 正常代碼
}
九、單元測試的命名規(guī)范
- 一般情況下,測試用例函數(shù)名稱以
Test開頭,如:TestExample。 - 每個重要的函數(shù)都要首先編寫測試用例,測試用例和正規(guī)代碼一起提交,方便進行回歸測試。
- 單元測試文件名,一般使用小寫單詞,用下劃線連接,命名示例為:
example_test.go。
十、系統(tǒng)的預定義標識符
除了保留關(guān)鍵字之外,Golang語言系統(tǒng)還提供了36個預定義標識符,包括基礎數(shù)據(jù)類型和系統(tǒng)內(nèi)嵌函數(shù)(不需要引入包,可以直接使用的函數(shù))。
| 預定義標識符 | 預定義標識符 | 預定義標識符 | 預定義標識符 | 預定義標識符 | 預定義標識符 |
|---|---|---|---|---|---|
| append | bool | byte | cap | close | complex |
| complex64 | complex128 | uint16 | copy | false | float32 |
| float64 | imag | int | int8 | int16 | uint32 |
| int32 | int64 | itoa | len | make | new |
| nil | panic | uint64 | println | real | |
| recover | string | true | uint | uint8 | uintprt |
總結(jié)
到此這篇關(guān)于Golang的命名規(guī)范及最佳實踐的文章就介紹到這了,更多相關(guān)Golang命名規(guī)范內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Golang?手寫一個簡單的并發(fā)任務?manager
這篇文章主要介紹了Golang?手寫一個簡單的并發(fā)任務?manager,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-08-08
GoLang之使用Context控制請求超時的實現(xiàn)
這篇文章主要介紹了GoLang之使用Context控制請求超時的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-04-04
Go語言服務器開發(fā)之簡易TCP客戶端與服務端實現(xiàn)方法
這篇文章主要介紹了Go語言服務器開發(fā)之簡易TCP客戶端與服務端實現(xiàn)方法,實例分析了基于Go語言實現(xiàn)的簡易服務器的TCP客戶端與服務器端實現(xiàn)技巧,需要的朋友可以參考下2015-02-02

