AI 產生的影像
每當我看到 Go 套件使用 init 函數時,我都會保持警惕。初始化函數在某些情況下可能會有幫助,但大多數人濫用它們。
在 Go 中,函數 init() 作為套件初始化的一部分在變數初始化和值設定後立即執行。
如果導入包,無論使用包內的內容,都會發生此過程。
我常在 init 函數中看到不應該存在的邏輯。
建立結構體的實例
在結構體中填充資料
其他依賴項的初始化
問題在於測驗。
測試快樂路徑可能很容易,但是錯誤場景呢?
如果您在 init 函數中加入在不同條件下可能表現不同的邏輯,那麼複製這些場景就變得具有挑戰性。
請記住,建立可靠軟體的關鍵是編寫測試,使用不同的輸入重複運行相同的功能,以驗證不同的結果。使用 init 函數做到這一點並不容易,因此人們不會編寫這些測試。
過度使用 init 函數最終會使程式碼更難測試和維護並且不可靠。
我的建議是完全避免使用 init 函數。通常,使用像 New() 函數這樣的建構子是正確的方法。
以上是避免 Go init 函數的詳細內容。更多資訊請關注PHP中文網其他相關文章!