老外總結的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、避免隱藏依賴:在使用介面時,請注意隱藏依賴。在將其實現為型別之前,要了解介面所需的所有方法集合。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024923/viewspace-2993262/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 2019 總結不一樣!
- Go HttpServer 最佳實踐GoHTTPServer
- 介面最佳化的常見方案實戰總結
- 關於 JS 模組化的最佳實踐總結JS
- Apache Airflow十條最佳實踐ApacheAI
- Google:12 條 Golang 最佳實踐Golang
- 什麼是框架?(最佳實踐、專案總結)框架
- go專案dockerfile最佳實踐GoDocker
- Mybatis plus通用欄位自動填充的最佳實踐總結MyBatis
- C/C++關於結構的緊湊填充的幾條最佳實踐C++
- Spring Boot 編寫 API 的 10條最佳實踐Spring BootAPI
- 微服務架構十條最佳實踐微服務架構
- 【GoLang】golang 最佳實踐彙總Golang
- 解鎖站長工具的潛力:開發介面實踐總結
- Linux實踐總結Linux
- 14個Flink SQL效能最佳化實踐分享SQL
- Java最佳實踐小結 - jonathangilesJava
- 今日頭條Go建千億級微服務的實踐Go微服務
- Vue開發總結 及 一些最佳實踐 (已更新)Vue
- 介面自動化測試的最佳工程實踐(ApiTestEngine)API
- Go 單體服務開發最佳實踐Go
- Go單體服務開發最佳實踐Go
- go-zero解讀與最佳實踐(上)Go
- RESTful API實踐總結RESTAPI
- 編碼最佳實踐——介面分離原則
- 工作這麼多年,我總結的資料傳輸物件 (DTO) 的最佳實踐物件
- 記一次介面效能優化實踐總結:優化介面效能的八個建議優化
- 殺入韓國暢銷TOP9,但這次的Habby新作有些不一樣
- 圍繞賭石引發的爭議,2021新年爆款為何有些不一樣?
- yii2開發中19條推薦實踐(阿北總結)
- 對SVN的落地與實踐總結
- React Hooks工程實踐總結ReactHook
- 小程式初實踐總結
- mysqldump的最佳實踐MySql
- RocketMQ的最佳實踐MQ
- TensorFlow搭建神經網路最佳實踐樣例神經網路
- 放置玩法如何與換裝PK結合? 這家公司走出了一條不一樣的道路
- Go 語言介面及使用介面實現連結串列插入Go