新手 go 程式員的最佳實務

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

無意中在 medium 看到了一篇文章《Best practices for a new Go developer》,讀完之後略有啟發,摘錄文章觀點至此共饗,感興趣讀者可以直接閱讀原文,原文很長也很散亂。

1

工欲善其事必先利其器,真正寫用 Go 編寫代碼之前先準備好你的環境,可以考慮從官方文檔 How to Write Go Code。

Go 提供了非常優秀的工具來保證代碼的風格和品質,比如:gofmt,godoc,goimports,學會使用它們。

對於新手來說不要著急一開始就想要完整的 Go 程式,你應該認真熟悉 Go 的基本語義和特性,認真讀完 官方的 Effictive Go

2

不要害怕犯錯,對於一門新的語言,大家都是平等,即使是用 Go 寫過一到兩年程式的人也會犯一些低級的錯誤。

要學會順勢而為,學會用 Go 的方式去寫 Go 的程式,比如要遵循 Go conventions,不要像 C 一樣在 Go 中總是使用指標。

新手都應該看看這篇文章 http://talks.golang.org/2012/splash.article,它有助於你瞭解 Go 是如何誕生的,它的哲學理念是什麼。

3

新手不要一開始就過渡關注 goroutine,channel 這些涉及並發的概念,你有可能濫用 channel 而不知道節制,畢竟 Go 在很多方面都表現的非常節制。

理解 interface,瞭解它的潛力,學會用組合和 interface 建立健壯的 Go 代碼, 它是 Go 最富有天賦的能力之一。

如果你之前使用的其它 object-oriented 語言,暫時忘掉那些關於 OO 的特性和思維,雖然 Go 支援 OO,但 Go 不是基於類的語言,不支援類的繼承。

4

Go 是強型別語言,意味著實現非常複雜的系統 API 時有可能會像 Java 或 C++ 一樣使用大量的預定義類型,使代碼變得脆弱醜陋,這並不是真正的 Go。Go 的 interface 和閉包特性允許我們寫出更優雅更通用的實現。

學會高效的使用閉包,為此可以學習一些函數式程式設計語言的理論,或者學學 Ruby,可以看看 The Well-Grounded Rubyist 這本書,然後嘗試在 Go 編程中嘗試使用這些知識。

學會測試 Go 程式,學會使用 Go 相關的測試載入器 unit testing,beachmarking testing,利用測試不斷糾正和提高 Go 程式的品質,可以看看這個 http://github.com/feyeleanor/GoSpeed。

5

不要強迫你把過去其它語言的經驗帶入 Go,每個語言都是不同的,如果你是第一次接觸 Go,讓自己用一個全新的視角去看待它,也就是你需要嘗試從語言的創作者以及社區的角度去理解它。

一開始使用 Go,盡量避免使用 third party library,可能它們能簡化你正在做的事情,但從長遠角度來看,它們也妨礙了你對這麼語言的理解。

從標準庫中學習如何寫出更好的 Go 代碼,比如你可以從 net/http package 中學習如何使用 concurrency,也可以去看看 Rob Pike 關於 concurrency 的視頻。

6

嘗試使用 composition 而不是 inheritance,基於 OO 的 inheritance 的思維方式會妨礙你寫出優雅的 Go 代碼。

擁抱 interface。

並不是所有的都是 object。

A language that doesn’t affect the way you think about programming, is not worth knowing. — Alan Perlis

如果一門語言沒有影響你對編程的思考,這麼語言就不值得學習。

7

  • 保持函數短小,變數名不要太長
  • 不要像寫其它語言一樣寫 Go,Go 不是 Java,不是 Python,不是 Ruby。
  • 花點時間搞懂 named and unnamed types。
  • 學會構建完整的 Go project,並且發布它們。
  • Interface 很重要,你應該學會使用它們,很多你遇到的問題都可以用 interface 解決。
  • 學習閱讀源碼是學習 Go 的一種極佳的方式。
  • 保持簡潔,簡潔是 Go 的一個重要特性之一,避免過度工程化。
  • 以更小的單元實現你的代碼功能,然後組合它們。

小結

這時間上有很多樸素的道理,很多人都知道,但是這些道理並沒有給知道的人帶來什麼改變,比如勤奮不一定能成功,還是很多人很勤奮,有了好運氣也不一定能成功,還是很多人天天盼望走狗屎運,前者太勤奮了,沒有時間思考,後者不知道勤奮,總是抱有幻想。

學習語言也是一樣,不要著急實踐,要先想一想,看一看,看完之後不能太懶,還要動手練一練。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.