首頁 >後端開發 >Golang >避免 Go init 函數

避免 Go init 函數

Patricia Arquette
Patricia Arquette原創
2024-12-19 11:24:18989瀏覽

Avoid the Go init function
AI 產生的影像

每當我看到 Go 套件使用 init 函數時,我都會保持警惕。初始化函數在某些情況下可能會有幫助,但大多數人濫用它們。

什麼是初始化函數? ?

在 Go 中,函數 init() 作為套件初始化的一部分在變數初始化和值設定後立即執行。

如果導入包,無論使用包內的內容,都會發生此過程。

我常在 init 函數中看到不應該存在的邏輯。

  • 建立結構體的實例

  • 在結構體中填充資料

  • 其他依賴項的初始化

問題在於測驗。

測試快樂路徑可能很容易,但是錯誤場景呢?

如果您在 init 函數中加入在不同條件下可能表現不同的邏輯,那麼複製這些場景就變得具有挑戰性。

請記住,建立可靠軟體的關鍵是編寫測試,使用不同的輸入重複運行相同的功能,以驗證不同的結果。使用 init 函數做到這一點並不容易,因此人們不會編寫這些測試。

過度使用 init 函數最終會使程式碼更難測試和維護並且不可靠。

我的建議是完全避免使用 init 函數。通常,使用像 New() 函數這樣的建構子是正確的方法。


以上是避免 Go init 函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn