Size: a a a

2021 May 06

M

Mplain in Kotlin Moscow
Ну я слышал например что it стоит использовать только в однострочных лямбдах, а если лямбда растягивается на несколько строк и в ней происходят разные вещи, то лучше it переименовать
источник

M

Mplain in Kotlin Moscow
Особенно если it: Exception
источник

M

Mplain in Kotlin Moscow
Ещё интересно было бы послушать про использование эксепшнов в качестве flow control
Все знают что это плохо, все это делают все равно, а где золотая середина в 21 году?
источник

AN

Alexander Nozik in Kotlin Moscow
it depends (pun intended). От конкретного кода зависит. Если по коду понятно, что происходит, можно и it. Если нет, можно замеить
источник

M

Mplain in Kotlin Moscow
Запрашиваешь у сервиса поиск по значению, сервис возвращает 400 или 404, ловишь ошибку, логируешь ее на уровне error со всем стектрейсом, клиенту посылаешь emptyList() и 200 ОК
источник

AN

Alexander Nozik in Kotlin Moscow
а вот тут однозначный ответ. Нет, не надо использовать exception для flow control. Никогда, за исключением IOException, и то лучше не стоит
источник

M

Mplain in Kotlin Moscow
Ну вот мне пришел запрос, дальше я должен прогнать цепочку действий, но первое же действие не находит ничего по параметрам из запроса
А ответ нужно отдать во враппере (ResponseDtoWrapper)
И что мне теперь делать: на уровне сервиса оборачивать во враппер и поднимать наверх, или вернуть нулл и обернуть во враппер уже в контроллере, или покинуть ошибку и обернуть в exceptionHandler-е?
источник

M

Mplain in Kotlin Moscow
Последнее проще всего, недостатки неочевидны, но возможно они есть
источник

M

Mplain in Kotlin Moscow
Может это не столько про котлин...
источник

AN

Alexander Nozik in Kotlin Moscow
Стандартное решение - силед класс/силед интерфейс
источник

M

Mplain in Kotlin Moscow
Типа success/failure?
источник

AN

Alexander Nozik in Kotlin Moscow
Если просто success/failure, то  достаточно нулябля
источник

M

Mplain in Kotlin Moscow
Монад?
Вот тоже непонятно, как далеко в котлине стоит уходить от джавы в сторону скалы и хаскеля, а когда не стоит усердствовать
источник

M

Mplain in Kotlin Moscow
И да, я понимаю что на все мои такие вопросы ответ -it depends
источник

AN

Alexander Nozik in Kotlin Moscow
Какая монада? Какая блоха?
источник

AN

Alexander Nozik in Kotlin Moscow
Не надо никакой скалы, не надо хаскеля. У вас есть nulable тип, он как раз означает значение или ничто. При этом ничто может интерпретироваться как failure. Если вам нужны разные типы failure, то делаете силед класс
источник

АГ

Алексей Гладков... in Kotlin Moscow
Я такое делал много раз )) заходит по-разному )
источник

AN

Alexander Nozik in Kotlin Moscow
В общем, если у кого есть публичный код, можем провернуть
источник

M

Mplain in Kotlin Moscow
Вот, звучит интересно
источник

SM

Sergey Morgunov in Kotlin Moscow
С чего это он однозначный 😀 Всегда топил и буду топить что бизнес исключения такой же flow control как if, switch и т.д. Не вижу ни одной причины почему это плохо 😀 Если только речь не идёт о чистом ФП, где конечно это не уместно и все варианты должны быть в результирующем значении функции 😀
источник