Go 编程规范
? ?最規(guī)范的Go代碼就是Go的標(biāo)準(zhǔn)庫(kù)的代碼,有條件的時(shí)候可以多看看Google的工程師是如何實(shí)現(xiàn)的。
1.注釋
? ?可以通過(guò)/* ... */或者//注釋, //之后應(yīng)該有個(gè)空格。
? ?如果想在每個(gè)文件的頭部加上注釋,需要在版權(quán)注釋和Package前面加一個(gè)空行,否則版權(quán)注釋會(huì)作為package的注釋
? ?注釋:注釋?xiě)?yīng)該用一個(gè)完整的句子,注釋的第一個(gè)單詞應(yīng)該是要注釋的提示符,以便在godoc中容易查找;注釋?xiě)?yīng)該以.結(jié)尾。
?
2.聲明slice
? 使用下面這種方式聲明slice:
? 而不是下面這種格式:
?
3.字符串的大小寫(xiě)
? ?錯(cuò)誤字符串不應(yīng)該大寫(xiě),應(yīng)寫(xiě)成:
? ?而不是寫(xiě)成:
? ?因?yàn)?#xff0c;這些字符串可能和其他字符串相連接,組合后的字符串如果中間有大寫(xiě)字母開(kāi)頭的單詞很突兀,除非這些首字母大寫(xiě)單詞是固定使用的單詞。
? ?注:縮寫(xiě)詞必須保持一致,比如都大寫(xiě)URL或小寫(xiě)url;常量一般聲明為MaxLength,而不是以下劃線分割MAX_LENGTH或者M(jìn)AXLENGTH;
?
4.處理error而不是panic或者忽略
? ?為了代表的強(qiáng)健性,不要使用_忽略錯(cuò)誤,而是要處理每一個(gè)錯(cuò)誤,盡管代碼寫(xiě)起來(lái)有些繁瑣也不要忽略錯(cuò)誤;
? ?盡量不要使用panic;
?
5.一些名稱(chēng)
? ?包名應(yīng)該使用單數(shù)形式,比如util,model,而不是utils,models;
? ?Receiver的名稱(chēng)應(yīng)該縮寫(xiě),一般使用一個(gè)或兩個(gè)字符作為Receiver的名稱(chēng),如:
? 有些單詞可能有多種寫(xiě)法,在項(xiàng)目中應(yīng)該保持一致,比如Golang采用的寫(xiě)法:
? 而不是:
?
6.空字符串檢查
? ?正確方式:
? ?而不是:
? 更不是:
?
7.非空slice檢查
? ?正確方式:
? 而不是:
?
8.直接使用bool值
? 對(duì)于bool類(lèi)型的變量var b bool,直接使用它作為判斷,而不是使用它和true/false進(jìn)行比較:
? 正確方式:
? 而不是:
?
9.byte/slice/string相等性比較
? ?而不是:
?
10.檢查是否包含子字符串
? ?應(yīng)使用strings.ContainesRune, strings.ContainesAny, strings.Contains
?
11.復(fù)制slice
? ?使用內(nèi)建函數(shù)copy,而不是遍歷slice逐個(gè)復(fù)制:
?
12.盡量縮短if
? ?正確使用方式:
? 而不是:
?
13.簡(jiǎn)化range
? ?正確方式:
? 而不是:
?
14.使用strings.TrimPrefix/ string.TrimSuffix
? ?正確方式:
? 而不是:
?
15.append slice
? ?正確方式:
? ?而不是:
?
參考:
https://www.yuque.com/docs/share/363c1355-138e-462a-91a5-901dba65f43e
總結(jié)
- 上一篇: 利用武汉市遥感影像进行土地利用分类分析
- 下一篇: 深入浅出Go Runtime