Pull to refresh

Comments 2

Ну фактически автор пересказывает суть исключений.


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


А то, что предлагает автор, еще хуже, чем проверять тип ошибок или ставнивать с глобальными переменными пакета. Го заведомо не дает вызывающему никакой информации кроме того, была ошибка, или нет. Любая надстройка над этой концепцией добавляет вам неявных зависимостей. Мне из имеющегося пока ближе глобальные переменные, реализующие error, в которые можно передать текст при return-е. Это, с одной стороны, описывает "ожидаемое поведение" (одна переменная вида ErrWrongInput — одно поведение -> один вид обработки), при этом пользовательский текст можно передать любой, подробно описывающий что произошло для лога или сообщения пользователю.
Поможет ли это сделать контракт явным — нет, нифига.

У автора оригинала (Дэйва Чини) очень тяжелый язык. И ход его мысли бывает совсем нелегко уловить. Но этот перевод только усугубляет ситуацию. Начиная с «контракта для функций» и лишних запятых.
Sign up to leave a comment.

Articles