老外總結的 14 條 Go 接口最佳實踐,有些不一樣

最近幾個月,沒事喜歡看看老外寫的技術文章,發現他們的一些思考維度真的有些不太一樣。當然,他們寫的文章大多數沒有國內的那麼卷。

今天這篇文章是關於 Go 語言中接口設計的一些最佳實踐,與 Java 等語言不盡相似,但又帶着 Go 語言的特色,可以對照學習,拓展編程思想層面的認知面。

以下是在 Go 中使用接口的一些最佳實踐:

1、優先小接口:接口是 Go 中的強大工具,但要保持它們小巧並專注於特定任務。這樣有助於提高可讀性、可維護性,並減少耦合。

2、避免類型切換:類型切換會增加代碼的複雜度且難以維護,要優先使用小巧且專注的接口,而不是類型切換。

3、使用接口進行模擬測試:接口是進行模擬測試的好工具,因爲它們允許將真實實現替換爲用於測試目的的模擬實現。

4、使用組合:使用組合來實現多個接口,而不是將一個接口嵌入到另一個接口中。這有助於提高可維護性並減少耦合。

PS:在 Go 中,組合的使用非常普遍,通過組合可以實現結構體(對照 Java 類)的繼承關係,而接口的組合同樣可對照 Java 接口的繼承關係。

5、選擇正確的抽象級別:在定義接口時,請考慮抽象級別,並確保接口既不太具體也不太通用(泛化)。

6、避免空接口:空接口沒有方法,可以接受任何類型,因此除非確實需要它們提供的靈活性,否則請避免使用。

PS:空接口的存在,與 Java 中 Object 的存在位置類型,當參數定義爲空接口時,可接收任何參數。就好像你把參數定義爲 Object 一樣。

7、使用類型斷言:類型斷言用於斷言接口值的底層類型,但應謹慎使用,因爲如果類型斷言不正確,它們可能會導致恐慌(panic)。

PS:panic 經常被翻譯爲恐慌。在 Golang 中,panic 是一種表示嚴重錯誤的異常情況。當程序遇到無法處理的錯誤時,它會引發 panic,並中斷當前的執行流程。panic 類似於 Java 中的 RuntimeException,它們都是屬於運行時異常,並且不需要顯式地在代碼中聲明或捕獲。

但是,與 Java 中的受檢異常(Checked Exception)不同,Golang 中的 panic 是一種不可恢復的異常,它會導致程序崩潰並觸發執行堆棧的展開。因此,在 Golang 中,通常建議使用 panic 來處理程序無法恢復的錯誤,而不是像 Java 中那樣使用受檢異常來表示可預期的錯誤情況。

8、完全實現接口:在實現接口時,請確保實現接口中定義的所有方法,否則實現將無法編譯。

9、使用接口聲明行爲:Go 中的接口用於聲明對象的行爲,而不是其實現。使用接口爲多種類型定義通用行爲。

10、對於具體類型使用類型斷言:在必要時,使用類型斷言訪問接口值的具體類型。

11、使用空接口:空接口(interface {})是一種通用類型,可以容納任何類型的值。謹慎使用它,因爲它可能使代碼更難以理解。

12、避免轉換函數:避免編寫將類型轉換爲接口的顯式轉換函數。這通常會導致代碼可讀性較差且難以維護。

13、使用接口組合:使用接口組合來聲明實現多個接口的類型。當想要將多種行爲組合到一個類型中時,這非常有用。

14、避免隱藏依賴:在使用接口時,請注意隱藏依賴。在將其實現爲類型之前,要了解接口所需的所有方法集合。


歡迎添加微信好友共同學****習進步,微信號:zhuan2quan(備註 “公衆號”)

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/GGCBsooEyFCoMwVSsc-WFw