go 程式設計師的最佳實踐

王聰聰發表於2017-12-04

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 的一個重要特性之一,避免過度工程化。 以更小的單元實現你的程式碼功能,然後組合它們。 小結

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

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

相關文章