Size: a a a

Programming Offtop

2021 January 31

𝐼

𝐼𝓈𝓁𝒶𝓂 in Programming Offtop
И еще один вопрос
Где стоит ловить ошибки при запросе в сервис в Repository или в Контроллере или в том и в другом  с точки зрения архитектуры
источник

AN

Alexander Nozik in Programming Offtop
𝐼𝓈𝓁𝒶𝓂
И еще один вопрос
Где стоит ловить ошибки при запросе в сервис в Repository или в Контроллере или в том и в другом  с точки зрения архитектуры
Это уже к мобильным клин-гуру. Но я бы сказал, что ловить надо там, где вы можете их обработать. Если вы ловите ошибку, вы должны как-то ее пробросить в UI или исправить на месте. Если вы ловите ошибку, чтобы прокинуть другую ошибку- ну так себе. Но это опять же с точки зрения Kotlin. Ортодоксальная Java к примеру любила типизированные ошибки
источник

𝐼

𝐼𝓈𝓁𝒶𝓂 in Programming Offtop
В одном слое ловить ошибку сделать что то , потом перебросит в другой слой не противоречит к принципам KISS и DRY,  что скажете с точки вашего зрения
источник

Kd

Konstantin dmz9 in Programming Offtop
саша сок #KotlinGang
вообще у меня вот так получилось, выглядит ужасно если честно
источник

YN

Yaroslav Nikitenko in Programming Offtop
𝐼𝓈𝓁𝒶𝓂
В одном слое ловить ошибку сделать что то , потом перебросит в другой слой не противоречит к принципам KISS и DRY,  что скажете с точки вашего зрения
Страуструп хорошо писал про обработку ошибок.
Ошибка - это ненормальное выполнение программы. Если у вас что-то передаётся дальше между слоями, то, наверное, это должна быть "нормальная" информация.
источник

AN

Alexander Nozik in Programming Offtop
𝐼𝓈𝓁𝒶𝓂
В одном слое ловить ошибку сделать что то , потом перебросит в другой слой не противоречит к принципам KISS и DRY,  что скажете с точки вашего зрения
Я уже сильно древний для всех этих принципов, только здравый смысл остался. Вопрос ведь в том, что такое ошибка. Это сообщение о том, что операция не удалась с детализацией почему она не удалась. Если заворачивание этой ошибки во что-то добавит новую полезную информацию - это можно делать. Если нет, то это бесполезное усложнение.
источник

AN

Alexander Nozik in Programming Offtop
Yaroslav Nikitenko
Страуструп хорошо писал про обработку ошибок.
Ошибка - это ненормальное выполнение программы. Если у вас что-то передаётся дальше между слоями, то, наверное, это должна быть "нормальная" информация.
Все это не относится к IO.
источник

AN

Alexander Nozik in Programming Offtop
В остальном правильно, конечно.
источник

YN

Yaroslav Nikitenko in Programming Offtop
Alexander Nozik
Все это не относится к IO.
IO? Почему нет?
источник

YN

Yaroslav Nikitenko in Programming Offtop
Input/output - это обычные строчные данные. Текст.
источник

𝐼

𝐼𝓈𝓁𝒶𝓂 in Programming Offtop
источник

YN

Yaroslav Nikitenko in Programming Offtop
Alexander Nozik
В остальном правильно, конечно.
и даже понятно почему: если у нас отдельная обработка ошибок где не надо, то это целых две логики вместо одной (обработки нормальных данных).
источник

AN

Alexander Nozik in Programming Offtop
Yaroslav Nikitenko
IO? Почему нет?
Потому что как раз для IO ошибка может быть нормальным состоянием. Ты не знаешь заранее удастся операция или нет. И ошибка должна быть обработана. А дальше вопрос в том, что нужно для обработки ошибки. Если содержание не важно, можно вернуть null и на этом успокоиться. Если содержание важно, то ее надо прокинуть до того места, где ее можно обработать. К примеру ошибка подключения бывает разной. Это может быть "сервер недоступен" или "неверный запрос". Оба ответа вообще говоря могут по разному отображаться в UI.
источник

YN

Yaroslav Nikitenko in Programming Offtop
Alexander Nozik
Потому что как раз для IO ошибка может быть нормальным состоянием. Ты не знаешь заранее удастся операция или нет. И ошибка должна быть обработана. А дальше вопрос в том, что нужно для обработки ошибки. Если содержание не важно, можно вернуть null и на этом успокоиться. Если содержание важно, то ее надо прокинуть до того места, где ее можно обработать. К примеру ошибка подключения бывает разной. Это может быть "сервер недоступен" или "неверный запрос". Оба ответа вообще говоря могут по разному отображаться в UI.
ну да, поэтому после того, как ближайшая к ней логика поймала ошибку, она дальше передаёт "сервер недоступен" или "неверный запрос" (а могла передать "здравствуй мир" в обычном случае).
источник

AN

Alexander Nozik in Programming Offtop
Yaroslav Nikitenko
ну да, поэтому после того, как ближайшая к ней логика поймала ошибку, она дальше передаёт "сервер недоступен" или "неверный запрос" (а могла передать "здравствуй мир" в обычном случае).
Ну оно далеко не всегда так работает. Может оказаться, что ты что-то не предусмотрел. Тогда тебе при новой хотелке в UI надо лезть внутрь модуля обмены сообщениями, ломать API, добавляя новые типы результата и меняя все обработчики по дорге и делать вообще нелокальные изменения. Не говоря о том, что тогда надо возвращать какой-нибудь Either и делать кучу плясок с ним. Этот подход имеет право на жизнь. Но не очень прагматично.
источник

YN

Yaroslav Nikitenko in Programming Offtop
Alexander Nozik
Ну оно далеко не всегда так работает. Может оказаться, что ты что-то не предусмотрел. Тогда тебе при новой хотелке в UI надо лезть внутрь модуля обмены сообщениями, ломать API, добавляя новые типы результата и меняя все обработчики по дорге и делать вообще нелокальные изменения. Не говоря о том, что тогда надо возвращать какой-нибудь Either и делать кучу плясок с ним. Этот подход имеет право на жизнь. Но не очень прагматично.
Это пример плохой архитектуры.
Слоистая как раз изолирует изменения. Тип может поменяться между двумя слоями, это не страшно.
источник

с#

саша сок #KotlinGang... in Programming Offtop
Thanks
источник

AN

Alexander Nozik in Programming Offtop
Yaroslav Nikitenko
Это пример плохой архитектуры.
Слоистая как раз изолирует изменения. Тип может поменяться между двумя слоями, это не страшно.
Ну я выразил свое мнение на основе своего опыта разработки. У меня не очень много опыта именно мобилок (хотя есть), но я думаю, что там, то, что я сказал еще более актуально
источник

YN

Yaroslav Nikitenko in Programming Offtop
Alexander Nozik
Ну я выразил свое мнение на основе своего опыта разработки. У меня не очень много опыта именно мобилок (хотя есть), но я думаю, что там, то, что я сказал еще более актуально
Ну возможно это я ошибаюсь и думаю, что архитектура это про все приложения ;)
Я для мобилки ничего не знаю, только сайты немного писал (но там как раз визуализация, вёрстка).
источник

YN

Yaroslav Nikitenko in Programming Offtop
Не за что, удачи! Можете просветить что получилось)
источник