附錄一:Go 程式風格指南

Note
這篇筆記還沒整理完,先別看喔。

Package naming

好的套件名稱應簡潔明白,通常是單數名詞,而且全都是用英文小寫。注意不可以用底線(snake case)或大小寫混和(mixedCaps)。

範例:

  • list
  • http
  • strconv (兩個單字的縮寫組合: string conversion)
  • syscall (兩個單字的縮寫組合:system call)
  • fmt (format 的縮寫)

應避免涵義廣泛的名稱,像是 utilutilityhelpercommon 等等。目的不夠明確的名稱不利於理解,而且更容易跟其他套件撞名。

不過,Go 標準函式庫裡面也是有用 util 來命名的套件和檔案,例如:types/util.gohttputil.goioutil.go 等等。

參見 Go 官方部落格:Package names

File naming

檔案名稱應該以全部英文小寫搭配底線字元 (_) 來命名。一般而言,不同的單字會以底線字元隔開,但也有不少情況是兩個單字連在一起。

以下範例取自 Go 標準函式庫 net/http 的原始碼

  • responsecontroller.go
  • roundtrip.go
  • roundtrip_js.go
  • routing_index.go
  • routing_index_test.go
  • transport.go
  • transport_default_other.go
  • transport_default_wasm.go

注意事項:

  • 檔案名稱如果是以 "." 或 "_" 開頭,Go tools 會忽略這些檔案。
  • 測試程式的檔案必須以 _test.go 結尾,以便 Go 測試工具辨識。
  • 檔案名稱如果以特定的作業系統或處理器架構的名稱結尾,將會影響實際的編譯結果。例如,dirent_linux.go 只會用於建置 Linux 環境的應用程式,dir_windows 只用於建置 Windows 環境的應用程式。

程式自動排版

所有的 Go 程式都必須符合 gofmt 工具採用的排版格式。

變數

除非是 exported 變數,否則一律使用 camelCase 來命名變數。

var myName = ""   // DO
var my_name = ""  // DON'T

偏好短一點的名稱。例如 request 可以用比較常見的縮寫 req

在可見範圍比較小的區塊中的區域變數名稱可以用更精簡的名稱,例如索引值可以用一個字母 i 來命名。

for i := 0; i < 100: i++ { }              // DO
for index := 0; index < 100: index++ { }  // DON'T

函式

不要寫 Getter 和 Setter 函式。

func Person() person     // DO
func GetPerson() person  // DON't

不要在名稱裡重複套件名稱。

encrypt.SHA()         // DO
encrypt.EncryptSHA()  // DON'T

推薦閱讀


先這樣,也許有空時會再更新。   我的其他站點:      

Last modified: 2024-09-25