校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > Go語言學習技巧之命名規范

Go語言學習技巧之命名規范

熱門標簽:阿里云ai電話機器人 濱州自動電銷機器人排名 鄭州亮點科技用的什么外呼系統 汕頭小型外呼系統 浙江高頻外呼系統多少錢一個月 建造者2地圖標注 黃岡人工智能電銷機器人哪個好 惠州電銷防封電話卡 釘釘有地圖標注功能嗎

前言

本篇主要講述Go語言的命名規范。優秀的代碼必須具備良好的可讀性,而可讀性的關鍵即在于命名風格。

Go的函數、變量、常量、自定義類型、包(Package)的命名方式遵循以下規則:

      1)首字符可以是任意的Unicode字符或者下劃線

      2)剩余字符可以是Unicode字符、下劃線、數字

      3)字符長度不限

Go只有25個關鍵字

break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var

優秀的命名

  • 優秀的命名應當是一貫的、短小的、精確的。
  • 所謂一貫,就是說同一個意義在不同的環境下的命名應當一致,譬如依賴關系,不要在一個方法中命名為depend,另一個方法中命名為rely。
  • 所謂短小,不必多言,當命名過長的時候,讀者可能更關注命名本身,而忽視真正的邏輯內容。
  • 所謂精確,就是命名達意、易于理解

首條經驗

聲明位置與使用位置越遠,則命名應當越長。

駱駝命名法

  • Go語言應該使用 MixedCase
  • (不要使用 names_with_underscores)
  • 首字母縮寫詞都應該用大寫,譬如ServeHTTP、sceneID、CIDRProcessor。

局部變量

  • 局部變量應當盡可能短小,譬如使用buf指代buffer,使用i指代index
  • 在很長的函數中可能會有很多的變量,這個時候可以適當使用一些長名字。
  • 但是寫出這么長的函數,通常意味著代碼需要重構了!🙅🏻‍

參數

函數的參數和局部變量類似,但是它們默認還具有文檔的功能

當參數類型具有描述性的時候,參數名就應該盡可能短小:

func AfterFunc(d Duration, f func()) *Timer
func Escape(w io.Writer, s []byte)

當參數類型比較模糊的時候,參數名就應當具有文檔的功能:

func Unix(sec, nsec int64) Time
func HasPrefix(s, prefix []byte) bool

返回值

在Go語言中,返回值可以定義名稱的,它可以當做一種特殊的參數。

尤其重要的是,在外部可見的函數中,返回值的名稱應當可以作為文檔參考。

func Copy(dst Writer, src Reader) (written int64, err error)
func ScanBytes(data []byte, atEOF bool) (advance int, token []byte,
 err error)

方法接收者(Receiver)

方法接收者也是一種特殊的參數。Go語言中沒有明顯的面向對象的概念,可以對方法定義方法接收者來實現類似于對象的方法的概念。

按照慣例,由于方法接收者在函數內部經常出現,因此它經常采用一兩個字母來標識方法接收者的類型。

func (b *Buffer) Read(p []byte) (n int, err error)
func (sh serverHandler) ServeHTTP(rw ResponseWriter, req *Request)
func (r Rectangle) Size() Point

需要注意的是,方法接收者的名字在同一類型的不同方法中應該保持統一,這也是前文所述的一貫性的需求。

導出包級別命名

導出名被使用的時候通常是放在包名后

所以,在導出變量、常數、函數和類型的時候,

不要把包名的意義再寫一遍

比較好的名字

bytes.Buffer strings.Reader

比較蠢的名字

bytes.ByteBuffer strings.StringReader

接口類型

只含有一個方法的接口類型通常以函數名加上er后綴作為名字

type Reader interface {
  Read(p []byte) (n int, err error)
}

有時候可能導致蹩腳的英文,但別管他,能看懂就好

type Execer interface {
  Exec(p []byte) (n int, err error)
}

有時候可以適當調整一下英文單詞的順序,增加可讀性:

type ByteReader interface {
  ReadByte(p []byte) (n int, err error)
}

當接口含有多個方法的時候,還是要選取一個能夠精準描述接口目的的名字,譬如net.Conn、http/ResponseWriter

Error的命名

Error類型應該寫成FooError的形式

type ExitError struct {
 ....
}

Error變量協程ErrFoo的形式

var ErrFormat = errors.New("unknown format")

包的命名

應當與它導出代碼的內容相關,避免util、common這種寬泛的命名

引入路徑

包路徑的最后一個單詞應該和包名一致

包路徑應該盡可能簡潔

記得把庫的主要代碼直接放在代碼庫的根目錄

避免在包路徑中使用任何大寫字母(并非所有文件系統都區分大小寫)

標準庫

上述很多例子都是從標準庫中來的

標準庫的很多內容都可以作為參考
多看看標準庫來尋求靈感吧

但是要記住:

當作者寫標準庫的時候,他們自己也在學習過程中。
多數情況下作者是對的,但是偶爾還是會犯一些錯誤

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

參考文獻

What's in a name? - Andrew Gerrand

您可能感興趣的文章:
  • 詳解Golang 推薦的命名規范

標簽:東營 泰安 駐馬店 滄州 阿壩 瀘州 晉中 昭通

巨人網絡通訊聲明:本文標題《Go語言學習技巧之命名規范》,本文關鍵詞  語言學習,技巧,之,命名,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Go語言學習技巧之命名規范》相關的同類信息!
  • 本頁收集關于Go語言學習技巧之命名規范的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    91国偷自产一区二区使用方法| 韩国理伦片一区二区三区在线播放 | 美国三级日本三级久久99| 中文字幕不卡三区| 免费不卡在线视频| 日韩一二三四区| 国产成人免费9x9x人网站视频| 精品日韩在线观看| 午夜视频一区二区| 国产精品77777| 亚洲一区av在线| 亚洲日本va午夜在线电影| 欧美成人精品高清在线播放| 欧美精品色综合| 国产精品久久久久精k8| 色综合咪咪久久| 久久97超碰国产精品超碰| 国产精品丝袜在线| 99视频一区二区| 日本中文字幕不卡| 国产精品理伦片| 欧美综合天天夜夜久久| 久久99国产精品久久99果冻传媒| 日韩欧美一二区| 99麻豆久久久国产精品免费优播| 狠狠色丁香婷婷综合久久片| 亚洲欧美日韩一区二区| 精品国产区一区| 色哟哟精品一区| 91女神在线视频| 成人av资源站| 成人污污视频在线观看| 国内成人精品2018免费看| 亚洲一区国产视频| 亚洲小少妇裸体bbw| 亚洲精选视频免费看| 欧美高清性hdvideosex| 国产欧美一区视频| 在线观看亚洲专区| 欧洲精品视频在线观看| 色综合久久久久综合体| 99久久精品免费精品国产| 99国产精品视频免费观看| 成人视屏免费看| 波多野结衣在线一区| 黄页网站大全一区二区| 国产一区二区h| 成人黄色777网| 91丨porny丨国产入口| 色婷婷亚洲一区二区三区| 在线视频亚洲一区| 欧美一级高清大全免费观看| 337p日本欧洲亚洲大胆精品| 中文字幕免费在线观看视频一区| 国产精品天美传媒沈樵| 一区二区三区中文在线观看| 中文久久乱码一区二区| 国产欧美综合在线| 青青草国产成人99久久| 成人av在线资源网站| 色婷婷精品久久二区二区蜜臀av | 亚洲三级在线看| 亚洲愉拍自拍另类高清精品| 亚洲午夜国产一区99re久久| 亚洲国产视频一区| 国产精品一区二区免费不卡| 色av一区二区| 久久精品夜夜夜夜久久| 肉色丝袜一区二区| 91在线观看一区二区| 日韩一级二级三级精品视频| 亚洲自拍偷拍网站| a亚洲天堂av| 亚洲国产成人午夜在线一区| 美女网站视频久久| 日韩一区二区三区免费看| 一区二区三区国产| 97久久超碰精品国产| 国产农村妇女毛片精品久久麻豆 | 亚洲色图在线播放| 大陆成人av片| 26uuu精品一区二区三区四区在线| 国产日韩欧美综合在线| 国产一区二区三区蝌蚪| 欧美成人伊人久久综合网| 久久精工是国产品牌吗| 日韩精品中文字幕一区| 久久不见久久见中文字幕免费| 日韩你懂的在线观看| 国产精品资源在线观看| 综合电影一区二区三区| 欧美日韩国产一二三| 日本不卡一区二区三区| 日韩欧美国产三级| 国产成人日日夜夜| 国产精品无人区| 欧美日韩在线电影| 一区二区三区免费网站| 欧美精品在线观看一区二区| 国产乱码精品一品二品| 亚洲最大成人网4388xx| 欧美一区二区三区在线电影| 国产91精品在线观看| 亚洲高清免费观看高清完整版在线观看| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 国产欧美一区二区精品性| 欧美日韩成人激情| 99re热视频这里只精品| 久久国产精品露脸对白| 亚洲国产三级在线| 亚洲图片另类小说| 久久久av毛片精品| 丁香婷婷综合五月| 国产一区在线精品| 麻豆成人91精品二区三区| 五月天婷婷综合| 亚洲小说春色综合另类电影| 亚洲色欲色欲www| 亚洲欧洲日产国码二区| 中文字幕不卡在线播放| 日韩一区二区三区视频在线观看| 国产99久久久国产精品免费看| 精品亚洲欧美一区| 韩国成人福利片在线播放| 亚洲成人av电影| 亚洲chinese男男1069| 艳妇臀荡乳欲伦亚洲一区| 天堂av在线一区| 蜜臀a∨国产成人精品| 蜜臀精品久久久久久蜜臀 | 久久99精品国产.久久久久| 日韩高清在线不卡| 国产麻豆成人精品| 不卡在线观看av| 欧美色男人天堂| 日韩欧美一级片| 国产欧美精品在线观看| 亚洲午夜电影在线| 国产一区二区免费看| 丁香六月综合激情| 日本久久电影网| 欧美videos大乳护士334| 国产色一区二区| 亚洲大尺度视频在线观看| 极品少妇xxxx精品少妇偷拍| 日韩专区欧美专区| 国产1区2区3区精品美女| 欧美日韩国产精品自在自线| 精品成人在线观看| 久久午夜电影网| 日韩毛片高清在线播放| 亚洲制服丝袜在线| 东方aⅴ免费观看久久av| 在线视频一区二区免费| 国产精品美女久久久久久久| 亚洲国产wwwccc36天堂| 国产一区二区成人久久免费影院| 91性感美女视频| 精品国产制服丝袜高跟| 一区二区三区色| 国产在线视频不卡二| 成人久久视频在线观看| 欧美日韩精品三区| 亚洲曰韩产成在线| 色综合天天性综合| 久久精品亚洲一区二区三区浴池 | 国产午夜亚洲精品理论片色戒| 日韩成人午夜精品| 欧美一区日本一区韩国一区| 五月激情综合网| 亚洲精品一区二区三区影院| 激情综合网av| 国产午夜精品一区二区| eeuss鲁片一区二区三区在线观看| 亚洲国产成人一区二区三区| 日本午夜精品视频在线观看 | 日本韩国精品一区二区在线观看| 中文字幕精品—区二区四季| 欧美蜜桃一区二区三区 | 国产在线看一区| 综合中文字幕亚洲| 26uuu国产日韩综合| 在线视频一区二区三区| 成人一级片在线观看| 日韩成人午夜精品| 亚洲伊人伊色伊影伊综合网| 国产欧美一区二区精品秋霞影院| 欧美性大战久久久久久久蜜臀| 国产精品一区免费在线观看| 五月婷婷久久丁香| 樱花草国产18久久久久| 精品乱人伦小说| 欧美日本高清视频在线观看| 99re在线视频这里只有精品| 麻豆久久一区二区| 亚洲成人免费电影| 国产精品美女一区二区| 成人欧美一区二区三区| 国产精品免费av| 亚洲欧美另类综合偷拍|