Go團隊在6月的時候,提出了一個名為try的新內建函數提案,要簡化錯誤處理的語法,消除Go中常被用來進行錯誤處理的樣板if陳述式,不過這項提案受到社群大量的成員反對,而現在提案審核委員Robert Griesemer宣布,提前否決這項提案

Go核心團隊中的Google工程師Russ Cox從去年8月的時候,開始跟社群溝通錯誤處理的想法,而也這是Go 2草案的一部分,Go 2出現的目的,是要解決Go無法用在大型程式碼庫和開發工作的問題,Russ Cox提到,Go程式之所以沒辦法良好的擴展規模,正是因為錯誤檢查以及錯誤處理的程式碼寫法,一般來說,Go應用程式存在太多的程式碼檢查錯誤,卻沒有足夠的程式碼來處理錯誤。

Russ Cox希望引入更輕量的語法,來取代現在慣用的賦值與if陳述式組和寫法,讓編寫錯誤處理更加簡單,也使得開發者能花更多的時間撰寫真正有生產力的程式碼。錯誤檢查提案建議不更改語言本身,而是使用現有的延遲(Defer)陳述式以及標準函式庫函式來打包錯誤,以最簡單的方法解決大多數常見的問題,而內建try函式是易於實作且直覺的方式,並且完全向後相容,也為擴展機制預留了擴充空間。

有部分人同意Go核心團隊的提案,但更多數的人認為,這項提案在解決一個不是問題的問題。Robert Griesemer提到,在這個提案的討論中,社群成員提到了許多Go核心團隊忽略的重點,包括除錯列印以及分析程式碼覆蓋等功能,而且更重要的是,他們聽到許多人認為,這個提案並非針對一個價值的問題提出解法,雖然核心團隊覺得應該改善Go中的錯誤處理,但是整體社群的意思,反而更傾向於多討論錯誤處理具體需要解決的問題。

由於社群壓倒性的反對聲量,Go核心團隊也就提前否決了這項提案,並承諾在未來,會注重問題的陳述,並且確保在需要解決的問題上,與社群達成共識。


Advertisement

更多 iThome相關內容