Go 社群就使用 '?' 運算子的新錯誤處理提案產生分歧

BigGo Editorial Team
Go 社群就使用 '?' 運算子的新錯誤處理提案產生分歧

Go 程式語言社群目前正在就使用 '?' 運算子簡化錯誤處理的新提案展開激烈討論,這凸顯出資深開發者和語言新手之間日益加大的觀點分歧。

傳統與現代錯誤處理方式

關於錯誤處理方法,Go 社群出現了明顯的分歧。長期使用 Go 的開發者已經習慣並欣賞顯式的 if err != nil 模式,而來自其他語言背景的開發者則經常覺得這種方式繁瑣且重複。正如一位社群成員所說:

「如果你習慣了異常處理和帶有 '?' 運算子的語言,那麼不斷地輸入 if err != nil 可能會讓人感到痛苦。但是當你使用這門語言一段時間後,你會開始不喜歡其他語言那些用於掩蓋錯誤的複雜系統。」

提案影響和社群擔憂

這項提議將影響 Go 標準庫中約1.98%的語句,這代表著 Go 程式碼編寫和閱讀方式的重大轉變。社群成員對此提出了幾點擔憂,包括可能會給新手帶來困惑、容易忽視 '?' 符號導致錯過錯誤處理,以及考慮到現代開發工具的存在,是否有必要進行如此根本性的改變。

提案中的關鍵統計資料:

  • 標準庫中共分析了723,292個語句
  • 14,304個語句可轉換為新語法
  • 所有語句中的1.98%將被更改
  • 2,825個語句(0.39%)將使用不帶可選塊的?符號

現代開發環境背景

有趣的是,一些開發者指出,隨著 AI 驅動的開發工具和程式碼助手的出現,編寫樣板程式碼的負擔已經大大減輕。這種技術進步使得一些人開始質疑,相比幾年前,減少樣板程式碼的語法改變是否仍然那麼重要。

技術可信度

這項提案來自 Ian Lance Taylor,他是 Go 語言開發的重要人物,在將泛型引入 Go 語言方面發揮了關鍵作用。這樣的背景使得許多開發者儘管最初有所保留,但仍然認真考慮了這個提案。

這場辯論仍在繼續,社群正在權衡減少樣板程式碼的好處與 Go 語言簡單性和錯誤處理明確性原則之間的平衡。

參考:discussion: spec: reduce error handling boilerplate using ? #71460