heavycharged
пока на простеньком примере, но честно говоря больно как-то это все
Pawel
я тут пытался как-то хоть закрыть логику работы с базой за интерфейсами, ограничился интерфейсом с методами для крудов, но вот если запрос чуть сложнее чем должен быть, то нужно как-то получать более гибкий доступ к моделям/репозиториям.
== я тут пытался как-то хоть закрыть логику работы с базой за интерфейсами вот точно не стОит тратить время на эту фигню. Мокать базу один фиг смысла нет, проще тестовую БД заюзать.
heavycharged
Я не для тестов
Pawel
мне даже в голову другое применение подобному не приходит
heavycharged
Independent of Database. You can swap out Oracle or SQL Server, for Mongo, BigTable, CouchDB, or something else. Your business rules are not bound to the database.
heavycharged
Сорян за пасту с телефона не удобно отвечать
Artem
В го вроде все драйвера баз строятся на стандартном
heavycharged
Короче я пытался вот это натянуть на Go, и потом на то что выйдет натянуть небольшой проектик: https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html
heavycharged
Вообще концепция годная
heavycharged
Но в некоторых местах не придумал как сделать и наговнякал
Aleksandr
Вообще концепция годная
годная, но 90% прогеров не сталкиваются с проектами, где это нужно применить. Но иногда применяют там где не нужно - и это больно
Aleksandr
Но в некоторых местах не придумал как сделать и наговнякал
поделись проблемой, может есть решение лучше, чем говнякать
V
Что больного в использовании паттерна репозиторий?
Aleksandr
Что больного в использовании паттерна репозиторий?
clean architecture - это не паттерн репозиторий
V
Это ещё репозиторий+сервисы+деливери
heavycharged
поделись проблемой, может есть решение лучше, чем говнякать
Как реализовать обработку ошибок и доставку их на клиент и в логи без регистрации и смс
Aleksandr
Это ещё репозиторий+сервисы+деливери
это методы реализации, а не цель.
V
Как реализовать обработку ошибок и доставку их на клиент и в логи без регистрации и смс
Инжектирование логгера, маппинг ошибок в конечный ожидаемый список
Aleksandr
11
15 все же
heavycharged
проблема не ясна. создай логгер, им отсылай)
как пробрасывать её от внутренних кругов в наружние (диаграмма Clean Arch), как определить границы. я думал на каждый слой создать структуру ошибки, при инициализации создавать UUID, и в логи писать UUID, если ошибка ожидаемая, то на клиенте отобразить что-то вроде "Ошибка такая-то, бла-бла". Если что-то неожиданное: восстановленная паника не дай бох, или что-то ещё, то пишем что-то вроде "Unexpected Error. Hash: <тут_uuid>".
heavycharged
короче именно сам враппинг ошибок выматывает
it works
@mr_tron спойлерить-то зачем?)
Aleksandr
@mr_tron спойлерить-то зачем?)
если это там a английское и правильный ответ 14, то Попов вчера прав был насчет теста
Roman
мдаааааа подъ€бнули так подъ€бнули
Anonymous
не успел)
Anonymous
Давайте ссылку на тест?
it works
@zelenin спойлерить-то зачем? Если бы вы сами прошли тест и читали формулировки внимательно, то поняли бы, что ответить правильно было довольно легко
Roman
@b7here тест заставляет тебя мыслить в стиле „правильного ответа может не быть в списке“ из-за чек-боксов, следственно ты выбираешь ничего не указывать потому-что правильного ответа тут нет и тут тебе „а“ английская, что ты В ПРИНЦИПЕ не можешь распознать…. это какой-то, извините, подлый на€б
it works
https://bit.ly/gogolang
Aleksandr
это издевательство а не тест (конкретно про вопрос нр. 11)
я на втором вопросе понял, что чтобы пройти тест надо сильно думать, а мне это в программировании на го не пригождается. И я решил что это плохой тест.
Roman
я на втором вопросе понял, что чтобы пройти тест надо сильно думать, а мне это в программировании на го не пригождается. И я решил что это плохой тест.
да я не против „сильно подумать“, но не находишь ли ты что вот конкретно 11 вопрос это самое настоящее издевательство? ладно бы сделал невозможным не указывать ни один из вариантов, тогда можно бы было предположить что одна из букв английская и правильный ответ сами понимаем какой… но так....
Roman
плюс в ещё одном вопросе (спойлерить не буду) я указал 1 из 2 верных решений (поторопился немного), получил 0 пунктов))))
it works
это издевательство а не тест (конкретно про вопрос нр. 11)
Если это была единственная ошибка, то она вполне простительна
Roman
Если это была единственная ошибка, то она вполне простительна
чья ошибка? ошибка автора теста или ошибка юзера?
Roman
@b7here ещё я очень рекомендую проганять примерный код через gofmt, иначе это опять-же издевательство. Кто будет читать неформатированный код в реальности?! Правильно, только тот кто не уловил философию Go.
it works
чья ошибка? ошибка автора теста или ошибка юзера?
Как посмотреть, но с учетом критики варианты ответов слегка уточнены. Теперь не отвертишься. Хотя изначально ноль галок означало "пропускаю вопрос, перехожу к следующему". Казалось, это достаточно очевидно
Roman
Как посмотреть, но с учетом критики варианты ответов слегка уточнены. Теперь не отвертишься. Хотя изначально ноль галок означало "пропускаю вопрос, перехожу к следующему". Казалось, это достаточно очевидно
пропускать вопрос? в тесте? это что вообще такое… нет уж. Если вы прячите такой коварный ход в коде, тогда запретите не выбирать, дайте человеку понять что правильный вариант есть
Pawel
годная, но 90% прогеров не сталкиваются с проектами, где это нужно применить. Но иногда применяют там где не нужно - и это больно
а тем 10% кто сталкивается, делают это пару раз в жизни, и скорее всего проще тупо переписать SQL
it works
в уме уметь разбирать неформатированный Go код?! извините но вы Go не поняли.
Не согласен. Вожусь с ним еще с первой версии, и понимаю его довольно неплохо.
Roman
никто не будет review’ить твой код прежде чем ты не проверишь его на форматирование и компилирование. даже если человек это сам не сделал - я прогоню его скриптом через gofmt и go build. если код не работает - я его смело верну автору с пометкой „not ready for review - *reason*“
it works
Именно. Прогоните. Желательно, в уме.
Roman
с компилированием может для этого конкретного теста ещё простительно, но с форматированием нет, абсолютно нет
Aleksandr
Roman
Roman
в уме, Карл!
it works
Да. Или gofmt такая богоданная штука, не поддающаяся осмыслению человека?
Roman
хорошо, тогда моё предложение немного переименовать тест: „unrealistic Go code review test“ дабы не тратить людям время))
Savely
хорошо, тогда моё предложение немного переименовать тест: „unrealistic Go code review test“ дабы не тратить людям время))
Там ведь не код без отступов в одну строку. Есть косяки, где go fmt пофиксил бы, да, но по-моему они некритичны.
it works
Моё мнение: человек должен уметь бесстрашно читать код, даже если в нем для экономии места табуляция одним пробелом сделана, а пара строк склеена через точку с запятой. Gofmt поправит. Если же точка с запятой ввергает вас в панику, тогда да, unrealistic. Хотя даже так, сквозь слезы, у вас получился неплохой балл
Roman
Там ведь не код без отступов в одну строку. Есть косяки, где go fmt пофиксил бы, да, но по-моему они некритичны.
тем не менее, никто не будет читать неформатированный Go код, а если код в тесте не форматированный - значит тест нереалистичный
it works
Не создавайте абсолютов. Код валидный? Валидный. Проходит, песочницу, компилятор и прочее? Проходит.
it works
Стал бы я так писать? Не стал бы. Смог бы я понять, что хотел сделать автор такого кода? Смог бы
it works
Смогли вы понять? Видимо, нет
it works
Претензия в этом?
Aleksandr
сломал тест
Aleksandr
https://play.golang.org/p/PX4vS7Z8-YQ
Aleksandr
теперь два правильных ответа (
it works
Шикарно!))
it works
Но у вас нарушено требование к формату utf8 файла, так что нет))
Aleksandr
напомните, что за требовнаие?
Aleksandr
в тесте не увидел этого