編程界最新資訊:Go語言十個工程要點

在本月初的 GopherCon 上,知名 Go 語言貢獻者與佈道師 Dave Cheney 發表了名為《The Zen of Go》的演講,之後他整理了演講內容在博客中分享,由於內容過長,他又寫了一個簡潔版本

這裡簡單翻譯一下簡潔版本的內容:

編寫簡單、可讀、可維護的 Go 代碼的十個工程要點。

編程界最新資訊:Go語言十個工程要點

每個包實現單一目標

設計良好的 Go 軟件包提供一個單一的思路,以及一系列相關的行為。一個好的 Go 軟件包首先需要選擇一個好名字,使用電梯法則(30 秒內向客戶講清楚一個方案),僅用一個詞來思考你的軟件包要提供什麼功能。

明確處理錯誤

健壯的程序其實是由處理故障案例的片段組成的,並且需要在故障出現之前處理好。冗餘的if err != nil { return err }比出了故障再一個個去處理更有價值。panic 和 recover 也一樣。

儘早 return,不要深陷

每次縮進時都會在程序員的堆棧中添加另一個先決條件,這會佔用他們短期內存中的 7±2 個片段。避免需要深層縮進的控制流。與其深入嵌套,不如使用守衛子句將成功路徑保持在左側。

併發權留給調用者

讓調用者選擇是否要異步運行你的庫或函數,不要強制他們使用異步。

在啟動 goroutine 之前,要知道它什麼時候會停止

goroutines 擁有資源、鎖、變量與內存等,釋放這些資源的可靠方法是停止 goroutine。

避免包級別的狀態

要完成明確和減少耦合的操作,需要通過提供類型需要的依賴項作為該類型上的字段,而不是使用包變量。

簡單性很重要

簡單性不是老練的代名詞。簡單並不意味著粗糙,它意味著可讀性和可維護性。如果可以選擇,請遵循較簡單的解決方案。

編寫測試以確認包 API 的行為

軟件包的 API 是與使用者的一份合約,不管先後,不管多少,一定要進行測試。測試是確定合約的保證。要確保測試使用者可以觀察和依賴的行為。

如果你認為速度緩慢,先通過基準測試進行驗證

以性能之名會犯下許多危害可維護性的罪行。優化會破壞抽象、暴露內部和緊密耦合。如果要付出這樣的代價,請確保有充分理由這樣做。

節制是一種美德

適度使用 goroutine、通道、鎖、接口與嵌套。

最後,小編想說:我是一名python開發工程師,

整理了一套最新的python系統學習教程,

想要這些資料的可以關注私信小編“01”即可(免費分享哦)希望能對你有所幫助


分享到:


相關文章: