在本月初的 GopherCon 上,知名 Go 語言貢獻者與佈道師 Dave Cheney 發表了名為《The Zen of Go》的演講,之後他整理了演講內容在博客中分享,由於內容過長,他又寫了一個簡潔版本
這裡簡單翻譯一下簡潔版本的內容:
編寫簡單、可讀、可維護的 Go 代碼的十個工程要點。
每個包實現單一目標
設計良好的 Go 軟件包提供一個單一的思路,以及一系列相關的行為。一個好的 Go 軟件包首先需要選擇一個好名字,使用電梯法則(30 秒內向客戶講清楚一個方案),僅用一個詞來思考你的軟件包要提供什麼功能。
明確處理錯誤
健壯的程序其實是由處理故障案例的片段組成的,並且需要在故障出現之前處理好。冗餘的if err != nil { return err }比出了故障再一個個去處理更有價值。panic 和 recover 也一樣。
儘早 return,不要深陷
每次縮進時都會在程序員的堆棧中添加另一個先決條件,這會佔用他們短期內存中的 7±2 個片段。避免需要深層縮進的控制流。與其深入嵌套,不如使用守衛子句將成功路徑保持在左側。
併發權留給調用者
讓調用者選擇是否要異步運行你的庫或函數,不要強制他們使用異步。
在啟動 goroutine 之前,要知道它什麼時候會停止
goroutines 擁有資源、鎖、變量與內存等,釋放這些資源的可靠方法是停止 goroutine。
避免包級別的狀態
要完成明確和減少耦合的操作,需要通過提供類型需要的依賴項作為該類型上的字段,而不是使用包變量。
簡單性很重要
簡單性不是老練的代名詞。簡單並不意味著粗糙,它意味著可讀性和可維護性。如果可以選擇,請遵循較簡單的解決方案。
編寫測試以確認包 API 的行為
軟件包的 API 是與使用者的一份合約,不管先後,不管多少,一定要進行測試。測試是確定合約的保證。要確保測試使用者可以觀察和依賴的行為。
如果你認為速度緩慢,先通過基準測試進行驗證
以性能之名會犯下許多危害可維護性的罪行。優化會破壞抽象、暴露內部和緊密耦合。如果要付出這樣的代價,請確保有充分理由這樣做。
節制是一種美德
適度使用 goroutine、通道、鎖、接口與嵌套。
最後,小編想說:我是一名python開發工程師,
整理了一套最新的python系統學習教程,
想要這些資料的可以關注私信小編“01”即可(免費分享哦)希望能對你有所幫助
閱讀更多 Python程序員不動否 的文章