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