プログラミング言語 Go のコミュニティは現在、「?」演算子を使用してエラー処理を簡素化する新しい提案をめぐって激しい議論を交わしており、ベテラン開発者と言語の新規参入者との間の溝が広がっています。
従来型vs最新型のエラー処理
この議論は、エラー処理のアプローチに関して Go コミュニティ内に大きな分断があることを浮き彫りにしています。長年 Go を使用している開発者は明示的な if err != nil
パターンに慣れ親しみ、むしろ好んで使用している一方で、他の言語から移行してきた開発者はこれを面倒で冗長だと感じることが多いようです。あるコミュニティメンバーは次のように述べています:
「例外処理や「?」演算子のような機能を持つ言語に慣れている人にとって、
if err != nil
を繰り返し入力することは苦痛かもしれません。しかし、この言語をしばらく使用していると、他の言語がエラーを隠蔽するための複雑なシステムを好まなくなってきます。」
提案の影響とコミュニティの懸念
提案された変更は、 Go 標準ライブラリの全ステートメントの約1.98%に影響を与えることになり、 Go コードの記述と読解方法に大きな変革をもたらすことになります。コミュニティメンバーからは、新規参入者の混乱、見落としやすい「?」記号によるエラー処理の見逃しのリスク、そして最新の開発ツールを考慮した際にこのような基本的な変更が本当に必要なのかという懸念が提起されています。
提案からの主要な統計:
- 標準ライブラリ内の分析された文の総数:723,292
- 新しい構文に変換可能な文の数:14,304
- 変更対象となる文の割合:1.98%
- オプショナルブロックなしで ? を使用する文の数:2,825(0.39%)
現代の開発コンテキスト
興味深いことに、AIパワード開発ツールやコパイロットの登場により、定型的なコードを書く負担が大幅に減少したことを指摘する開発者もいます。この技術的進歩により、定型コードを減らすための構文変更が数年前ほど重要ではなくなっているのではないかという疑問が提起されています。
技術的信頼性
この提案は、言語に generics を導入する際に重要な役割を果たした Go 開発の主要人物である Ian Lance Taylor から出されたものであり、コミュニティ内で大きな重みを持っています。この背景により、多くの開発者は最初の懸念はあるものの、提案を真剣に検討するようになっています。
エラー処理における定型コードの削減と、 Go の単純さと明示性の原則との間のバランスを取るべく、議論は継続して進化しています。
参照: discussion: spec: reduce error handling boilerplate using ? #71460