Uber 開放公司內部《Go 語言風格指南》
Uber 近日開放了其公司內部使用的《Go 語言風格指南》。Uber 介紹,“風格”也就是支配我們代碼的慣例,該指南出現在Uber 公司內部是為了使代碼庫易於管理,同時讓工程師有效地使用Go 語言特性。文檔中詳細描述了在Uber 編寫Go 代碼的注意事項,具體列出來的是“Dos and Don’ts of writing Go code at Uber”,也就是不該怎樣寫,而應該怎樣寫Go 代碼。
其中許多約定是Go 的通用準則,而其它準則則參考了外部資源:
指南涵蓋了“指導方針”、“性能”、“風格”與“模式”幾個大模塊,下設各項具體的注意事項:
以“Defer to Clean Up(使用defer 清理)”小節為例,該指南這樣描述:
使用defer 清理資源,例如文件和鎖。
Bad
Good
p.Lock()if p.count < 10 { p.Unlock() return p.count}p.count++newCount := p.countp.Unlock()return newCount// easy to miss unlocks due to multiple returns
p.Lock()defer p.Unlock()if p.count < 10 { return p.count}p.count++return p.count// more readable
defer 的開銷非常小,只有在可以證明函數執行時間處於納秒級的程度時,才應避免使用。使用defer 可以獲得更好的代碼可讀性,而它的開銷相比來說可以忽略不計。對於具有更多更大內存訪問的方法來說defer 會顯得更加重要。
詳情查看該指南: