go 变量大写_28. 一文了解Go语言中编码规范
大家好,我是明哥。
由于某些不可抗力,之前該專欄的所有內(nèi)容都被刪除了。因此之后的一段時(shí)間內(nèi),我會(huì)重新發(fā)布這些文章,先給已經(jīng)看過(guò)的關(guān)注者提個(gè)醒。
本文原文:http://golang.iswbm.com
Github:http://github.com/iswbm/GolangCodingTime
每個(gè)語(yǔ)言都有自己特色的編碼規(guī)范,學(xué)習(xí)該語(yǔ)言的命名規(guī)范,能讓你寫出來(lái)的代碼更加易讀,更加不容易出現(xiàn)一些低級(jí)錯(cuò)誤。
本文根據(jù)個(gè)人編碼習(xí)慣以及網(wǎng)絡(luò)上的一些文章,整理了一些大家能用上的編碼規(guī)范,可能是一些主流方案,但不代表官方,這一點(diǎn)先聲明一下。
1. 文件命名
2. 常量命名
目前在網(wǎng)絡(luò)上可以看到主要有兩種風(fēng)格的寫法
這兩種風(fēng)格,沒(méi)有孰好孰弱,可自由選取,我個(gè)人更傾向于使用第二種,主要是能一眼與變量區(qū)分開(kāi)來(lái)。
如果要定義多個(gè)變量,請(qǐng)使用 括號(hào) 來(lái)組織。
const (APP_VERSION = "0.1.0"CONF_PATH = "/etc/xx.conf" )3. 變量命名
和常量不同,變量的命名,開(kāi)發(fā)者們的喜好就比較一致了,統(tǒng)一使用 駝峰命名法
這里列舉了一些常見(jiàn)的特有名詞:
// A GonicMapper that contains a list of common initialisms taken from golang/lint var LintGonicMapper = GonicMapper{"API": true,"ASCII": true,"CPU": true,"CSS": true,"DNS": true,"EOF": true,"GUID": true,"HTML": true,"HTTP": true,"HTTPS": true,"ID": true,"IP": true,"JSON": true,"LHS": true,"QPS": true,"RAM": true,"RHS": true,"RPC": true,"SLA": true,"SMTP": true,"SSH": true,"TLS": true,"TTL": true,"UI": true,"UID": true,"UUID": true,"URI": true,"URL": true,"UTF8": true,"VM": true,"XML": true,"XSRF": true,"XSS": true, }4. 函數(shù)命名
另外,函數(shù)內(nèi)部的參數(shù)的排列順序也有幾點(diǎn)原則
5. 接口命名
使用駝峰命名法,可以用 type alias 來(lái)定義大寫開(kāi)頭的 type 給包外訪問(wèn)。
type helloWorld interface {func Hello(); }type SayHello helloWorld當(dāng)你的接口只有一個(gè)函數(shù)時(shí),接口名通常會(huì)以 er 為后綴
type Reader interface {Read(p []byte) (n int, err error) }6. 注釋規(guī)范
注釋分為
6.1 包注釋
6.2 代碼注釋
用于解釋代碼邏輯,可以有兩種寫法
單行注釋使用 // ,多行注釋使用 /* comment */
// 單行注釋/* 多 行 注 釋 */另外,對(duì)于代碼注釋還有一些更加苛刻的要求,這個(gè)看個(gè)人了,摘自網(wǎng)絡(luò):
- 所有導(dǎo)出對(duì)象都需要注釋說(shuō)明其用途;非導(dǎo)出對(duì)象根據(jù)情況進(jìn)行注釋。
- 如果對(duì)象可數(shù)且無(wú)明確指定數(shù)量的情況下,一律使用單數(shù)形式和一般進(jìn)行時(shí)描述;否則使用復(fù)數(shù)形式。
- 包、函數(shù)、方法和類型的注釋說(shuō)明都是一個(gè)完整的句子。
- 句子類型的注釋首字母均需大寫;短語(yǔ)類型的注釋首字母需小寫。
- 注釋的單行長(zhǎng)度不能超過(guò) 80 個(gè)字符。
- 類型的定義一般都以單數(shù)形式描述:
// Request represents a request to run a command. type Request struct { ...
- 如果為接口,則一般以以下形式描述:
// FileInfo is the interface that describes a file and is returned by Stat and Lstat.
type FileInfo interface { ...
- 函數(shù)與方法的注釋需以函數(shù)或方法的名稱作為開(kāi)頭:
// Post returns *BeegoHttpRequest with POST method.
- 如果一句話不足以說(shuō)明全部問(wèn)題,則可換行繼續(xù)進(jìn)行更加細(xì)致的描述:
// Copy copies file from source to target path.
// It returns false and error when error occurs in underlying function calls.
- 若函數(shù)或方法為判斷類型(返回值主要為 bool 類型),則以 <name> returns true if 開(kāi)頭:
// HasPrefix returns true if name has any string in given slice as prefix.
func HasPrefix(name string, prefixes []string) bool { ...
6.3 特別注釋
- TODO:提醒維護(hù)人員此部分代碼待完成
- FIXME:提醒維護(hù)人員此處有BUG待修復(fù)
- NOTE:維護(hù)人員要關(guān)注的一些問(wèn)題說(shuō)明
7. 包的導(dǎo)入
單行的包導(dǎo)入
import "fmt"多個(gè)包導(dǎo)入,請(qǐng)使用 {} 來(lái)組織
import {"fmt""os" }另外根據(jù)包的來(lái)源,對(duì)排版還有一定的要求
8. 善用 gofmt
除了命名規(guī)范外,Go 還有很多格式上的規(guī)范,比如
因此在格式上的問(wèn)題,你大部分都可以放心交由 gofmt 幫你調(diào)整。關(guān)于 gofmt 的文章還在寫,應(yīng)該這兩天就會(huì)更新。你可以過(guò)兩天再來(lái)看看。
參考文章:
- Go語(yǔ)言(Golang)編碼規(guī)范
好了,今天的文章就到這里了。
若今天的分享對(duì)你有幫助,不如點(diǎn)個(gè)贊,支持一下?
總結(jié)
以上是生活随笔為你收集整理的go 变量大写_28. 一文了解Go语言中编码规范的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: shell中的各种括号的使用方法
- 下一篇: AR/QCA SPI 启动原理和 ART