Разработчики Go окончательно отказались от изменений синтаксиса обработки ошибок — Tproger

0
15

Впрочем, это лучшее из решений — даже начинающие Go-разработчики очень быстро привыкают к текущей практике

Команда разработчиков Go официально объявила, что не будет менять синтаксис обработки ошибок в языке.

После шести лет обсуждений, сотен предложений комьюнити и трех масштабных инициатив от самих авторов Go принято решение прекратить попытки — ни одна из предложенных идей не получила достаточной поддержки.

Почему это важно

Go часто критикуют за избыточную многословность в обработке ошибок. Код вроде:

			x, err := call() if err != nil {     return err }  		

становится настолько повторяющимся, что мешает восприятию логики программы. Попытки изменить это начались еще в 2018 году: сначала через check/handle, затем через упрощенный try, и недавно — с предложением использовать ?, как в Rust.

Однако ни одно из решений не устраивало всех: одно было слишком сложным, другое скрывало управление потоком, третье вызывало путаницу при отладке.

Иск на $1.2 млрд: Apple обвинили в хранении порно с несовершеннолетними в iCloudtproger.ru

В каждом случае обсуждения сопровождались сотнями комментариев и сильным разногласием даже внутри команды Google Go.

Что теперь?

Разработчики решили остановить все инициативы, связанные с изменением синтаксиса ошибок, и закрыть соответствующие предложения без дальнейшего рассмотрения. Причины:

  • Ни один из подходов не получил консенсуса. Новая конструкция затронула бы весь экосистемный код, в отличие от, например, дженериков.
  • В Go принято правило — «один способ делать вещи». Добавление альтернатив сломало бы этот принцип.
  • Большинство пользователей Go на практике привыкают к текущему подходу и не считают его критичным.
Читать также:
Infinix представила первый в мире смартфон с Dimensity 7300 Ultimate — Note 50x по цене от $135

Вместо этого команда сосредоточится на улучшении стандартной библиотеки (например, функций вроде cmp.Or) и инструментах IDE: возможно, они смогут скрывать повторы при чтении кода, не меняя сам язык.

А что с жалобами?

Ошибки продолжают занимать первое место в списке недовольств пользователей Go (после того как добавили дженерики). Но, как показала практика, не все хотят изменений ради краткости.

Особенно если это усложнит отладку или приведет к неидоматичному коду. Команда подчеркивает: они по-прежнему готовы выслушивать идеи — но не по синтаксису.

Вывод: для Go-мира все остается по-старому. Как и 15 лет назад, ошибки проверяются через if err != nil, и так будет еще долго.