Когда вся программа накрылась, код возврата говорит лишь о том, что случилась ошибка, причину ошибки логично поместить в лог с уровнем fatal.
Автор об этом случае пишет так:
Если возникает ошибка, которая не может быть обработана, она должна появиться в main.main там, где программа завершается. Незначительные неудобства, связанные с необходимостью вставки префикса FATAL перед окончательным сообщением журнала или записи непосредственно в os.Stderr с помощью fmt.Fprintf, не является достаточным основанием для расширения пакета матодом log.Fatal.
Лично мне больше нравится подход logr и go-kit-log, там тоже есть интерфейс логгера сильно ограниченный. В logr есть вывод с уровнем важности, V(verboseLevel int), чем больше verboseLevel тем ниже важность сообщения и больше сообщений у вас в логе.
В go-kit-log никто не запрещает вам указывать название уровней для записи журнала, но вы это передаете как параметр вызова.
Интерфейс тут такой:
type Logger interface {
Log(keyvals ...interface{}) error
}
Ваша реализация сама разберется как это записать в хранилище.
И кстати тут автор не уточняет какова должна быть реализации, а вот некоторые разработчики пошли по его идеям. Автор github.com/go-log/log сделал интерфейс, как пишет Дейв.
Конечно автор идет на пролом к идеальному, но по факту в реализации разработчики понимают эту идею, как намеренное сокращение интерфейса в угоду слабой связанности.
Посмотрите на реализацию логера в Go Kit, описанную в данной презентации speakerdeck.com/chrishines/go-kit-log-package возможно это внесет больше ясности.
Заметьте автор — Дейв Чини, достаточно опытный разработчик, много его пакетов используется большинством разработчиков, например, github.com/pkg/errors. Думаю, он имеет причины к такому подходу.
Товарищи, не забывайте — это перевод. Прошу вас минусы аргументировать, мне это важно, чтобы пронять как люди относятся к данной идее Дейва Чини (автор известного модуля github.com/pkg/errors).
А если отбросить евангелистическую подачу материала, то о solid можно и не говорить вовсе. Лучше бы на примере показали как этому следовать в go. Я вот форк https://github.com/r3code/clean-go сделал от clean-go чтобы посмотреть инверсию зависимости, тут как раз есть части solid.
Отлично когда человек смог решить проблему в поставленных рамках. Большинство комментариев тут выглядят как комментарии на форумах по программированию, когда человек спрашивает "как такое сделать на таком то языке", а в ответ получает "лучше возьми вот этот язык он круче и лучше и быстро сделай".
По моему «грабли» лучше заменить на «подводные камни». И было бы вроде «Подводные камни в Go о которых мы должны помнить». Для меня это кажется, более наглядно и обыденно, т.к. подводные камни как раз то что вы описали — то чего не видно на поверхности и может причинить неприятности, если не знать, где они. И да — о них всегда узнаешь впервые, когда уже напоролся.
Очень часто материал подается с точки зрения «ух ты посмотри как тут много винтиков, гаек, планок и отвертка с ключом!», но не приводится примера задачи куда это применить можно. Многие думают, что полиморфизм это свойство исключительно ООП.
А мне нравится, что Delphi вызывает холивар — значит он до сих пор интересен людям и многие о нем знают. Некоторые и споривших даже пробуют Delphi, чтобы действительно понять.
Вообще в этих спорах нет смысла. Решая поставленную задачу соревнуешься только с самим собой и предыдущей решенной тобой задачей. Только сделав вторую можно понять можно ли было решить первую лучше.
Советую автору анкеты переделать ее, чтобы в каждом варианте было только 4 возможных выбора, а не 5 — это заставит заполняющих подумать перед ответом, а не ставить стандартное среднее «наверно/незнаю».
Иначе большинство результатов будет усреднено, среднее решение — не то ни другое дает право на лень при выборе, ни хорошо, ни плохо.
Мы на работу с месяц назад получили кресла оператора Амиго Плюс, производство Юнитекс, Россия. www.unitex.ru/chairs/16769.html
В общем для цены в 5700р. кресло хорошее, есть регулировка высоты спинки, регулировка глубины сидения за счет спинки, свободная регулировка угла наклона спинки с фиксайией, регулировка подлоконтиков по высоте, регулировка высоты сидения.
Сборка правда на 4-, т.к. одно кресло по устройству отличалось от других. Видимо они фурнитуру меняли. Например на одном не было надписей на ручках регулировки, но зато в спинке на кожухе сверху был вделан крючок.
Сидеть достаточно удобано, особенно понравились регулируемые подлокотники.
Автор об этом случае пишет так:
Лично мне больше нравится подход logr и go-kit-log, там тоже есть интерфейс логгера сильно ограниченный. В logr есть вывод с уровнем важности, V(verboseLevel int), чем больше verboseLevel тем ниже важность сообщения и больше сообщений у вас в логе.
В go-kit-log никто не запрещает вам указывать название уровней для записи журнала, но вы это передаете как параметр вызова.
Интерфейс тут такой:
Ваша реализация сама разберется как это записать в хранилище.
Конечно автор идет на пролом к идеальному, но по факту в реализации разработчики понимают эту идею, как намеренное сокращение интерфейса в угоду слабой связанности.
Посмотрите на реализацию логера в Go Kit, описанную в данной презентации speakerdeck.com/chrishines/go-kit-log-package возможно это внесет больше ясности.
Какое то перечисление технологий и все. Нудно. А выставка рекламы в начале просто как бельмо.
А если отбросить евангелистическую подачу материала, то о solid можно и не говорить вовсе. Лучше бы на примере показали как этому следовать в go. Я вот форк https://github.com/r3code/clean-go сделал от clean-go чтобы посмотреть инверсию зависимости, тут как раз есть части solid.
Отлично когда человек смог решить проблему в поставленных рамках. Большинство комментариев тут выглядят как комментарии на форумах по программированию, когда человек спрашивает "как такое сделать на таком то языке", а в ответ получает "лучше возьми вот этот язык он круче и лучше и быстро сделай".
И все таки "если компания не может их реализоваться" — без "ся" глаза колоть не будет.
Иначе большинство результатов будет усреднено, среднее решение — не то ни другое дает право на лень при выборе, ни хорошо, ни плохо.
www.unitex.ru/chairs/16769.html
В общем для цены в 5700р. кресло хорошее, есть регулировка высоты спинки, регулировка глубины сидения за счет спинки, свободная регулировка угла наклона спинки с фиксайией, регулировка подлоконтиков по высоте, регулировка высоты сидения.
Сборка правда на 4-, т.к. одно кресло по устройству отличалось от других. Видимо они фурнитуру меняли. Например на одном не было надписей на ручках регулировки, но зато в спинке на кожухе сверху был вделан крючок.
Сидеть достаточно удобано, особенно понравились регулируемые подлокотники.