
Maksim
05.03.2018
18:26:36
С чего вдруг это неправильно? Потому, что ты так решил?)

Evgeniy
05.03.2018
18:26:48
и существует очень много способов когда можно не использовать throw и как пример maybe (nullObject) или either

Bohdan
05.03.2018
18:26:49
хорошо тут мой вопрос зашёл...

Maksim
05.03.2018
18:26:56
Ну серьёзно, заканчивай с водой

Google

Maksim
05.03.2018
18:27:35

Evgeniy
05.03.2018
18:27:36
ну серьезно, заканчивай с водой

Maksim
05.03.2018
18:27:54

Bohdan
05.03.2018
18:28:24
окей, донаброшу
исключения для бизнес логики?
закрытие контракта бросит UnpaidInvoicesRemainException
просто где - то я видел, что это вполне по ДДД-шному... хотя могу ошибаться
про монады почитаю, да

Evgeniy
05.03.2018
18:30:45
окей, донаброшу
исключения для бизнес логики?
имхо исключение это скорее возможность пропрыгать на несколько слоев вверх, но если ты всюду обрабатываешь исключение это звоночек что вместо него надо вернуть просто значение и обработать его имхо
и исключение это как раз непреодалимая ошибка бизнес логики и дальнейшее выполнение программы бессмысленно, имхо естественно

Bohdan
05.03.2018
18:32:12
имхо
в разрезе бизнес - логики уместно говорить не о программе, а о юзкейсе
и вот на юзкейс исключения ложатся более - менее

Evgeniy
05.03.2018
18:32:50
так вот именно в одном юзкейсе это исключительная ситуация

Google

Evgeniy
05.03.2018
18:33:01
в другом нет и все нормально

Bohdan
05.03.2018
18:33:45
ты имеешь ввиду семантику конкретного класса исключения?

Maksim
05.03.2018
18:33:59
В памяти сразу всплывает статья 5летней давности, что исключение != ошибка) в контексте языка, который нельзя называть)
Аргументация явно оттуда)

Evgeniy
05.03.2018
18:34:08
по слову семантика может быть сразу холивар на тему что это
но мысль исключение != ошибка имхо верная
потому что например вот написал ты в интепретируемом языке таком как пых ошибку в файле
точку с запятой не поставил
для тебя это ошибка или опечатка
для интепретатора это исключительная ситуация выполнять которую он не знает как дальше и падает
тут вопрос в том откуда смотреть на ситуацию
с точки зрения фс все хорошо с этим файлом и никаких ошибок или исключений в нем нет

Maksim
05.03.2018
18:39:49
упарывание в терминологию ради упарывания. Буквоедство, если угодно. На конечный код никак не влияет. Разве что раздувает его сильнее
без какой-либо практической ценности

Evgeniy
05.03.2018
18:40:30
о теперь мериться строками
ну ок отличный аргумент

Maksim
05.03.2018
18:40:53
ну да, неплохой

Evgeniy
05.03.2018
18:41:02
только он тоже может быть не в твою сторону

Maksim
05.03.2018
18:41:11
маловероятно

Google

Evgeniy
05.03.2018
18:41:37
ты писал на java и работал с файловой системой?

Maksim
05.03.2018
18:41:52
ты так и не рассказал идиоту, почему эксепшен вместо return - ошибка

Evgeniy
05.03.2018
18:42:30
до java 8 он кидает 3 разных типа исключения
вроде

Maksim
05.03.2018
18:42:47
и?
продолжай мысль. я не очень хочу додумывать)

Evgeniy
05.03.2018
18:44:02
ну ты напиши обработку ситуации вывода файла на экран или текст ошибки
и померяй количество строк
если мы говорим о них

Maksim
05.03.2018
18:44:19
иоксепшен, велкам

Evgeniy
05.03.2018
18:44:27
с исключениями и с использованием чего то типо either
для результат

Maksim
05.03.2018
18:44:42
я ответ хочу получить и идти в ванну греться) не зря ж 40 минут руки морозил с телефоном)

Evgeniy
05.03.2018
18:45:13
и outofmemory
тогда уж Throwable
Типы в помощь
расскажи учитывая вот эти типы что для каждого метода свои типы исключений
и сложи их реализацию в код

Google

Maksim
05.03.2018
18:47:19
видимо, зря руки морозил

Evgeniy
05.03.2018
18:47:24
и подумай хорошо увеличит ли это количество строк в коде или нет
и еще подумать над измерением количеством строк кода и качеством кода или по от этого параметра коррелирует ли это и насколько сильно
несмотря на что пример с чтением файла из фс это возможно далеко не лучший пример

Maksim
05.03.2018
18:49:30
я так и не получил ответа как это улучшает код)
ну а если ты собираешься рассказывать про исключения вроде outofmemory, то у меня для тебя плохие новости

Evgeniy
05.03.2018
18:50:18

Maksim
05.03.2018
18:50:45
если хочешь про джаву говорить, а не богомерзкий пхп, говори про джаву) мне насрать

Evgeniy
05.03.2018
18:51:16
потому что пхп не может сделать то чего от него ожидают
так как он не знает как интерпретировать ошибку

Maksim
05.03.2018
18:51:27
может и делает)

Evgeniy
05.03.2018
18:51:34
в Java этот вопрос решается компилятором
и требовать от него выполнения не будут
пока не будет преобразован в byte code в виде jar или war

Maksim
05.03.2018
18:52:06
это весьма странный наброс.

Evgeniy
05.03.2018
18:52:36
в случае с war его еще надо задеплоить успешно

da horsie
05.03.2018
18:54:53
мы же тут про ооп? почему бы не сделать по-объектному и вернуть объект "результат операции"

Evgeniy
05.03.2018
18:55:20
и методы

Google

da horsie
05.03.2018
18:55:29
называйте это maybe или нулл-обжектом или как хотите, смысл не меняется

Evgeniy
05.03.2018
18:55:36
но этот объект результат операций слишком абстратный если сделать
теряются типы и проверка типов
потому что он возвращает mixed

da horsie
05.03.2018
18:56:03

Evgeniy
05.03.2018
18:56:10
там сам объект заглушка

da horsie
05.03.2018
18:56:22

Evgeniy
05.03.2018
18:56:35

da horsie
05.03.2018
18:56:44
это все одна и та же идея, просто чуть разные воплощения

Evgeniy
05.03.2018
18:56:54
$user= $service->getUser()l;
$user->getName();

da horsie
05.03.2018
18:57:47
да) цель у таких штук одна - сократить количество if/else в клиентском коде

Evgeniy
05.03.2018
18:57:54
пример nullObject

Bohdan
05.03.2018
18:58:11
какой-нибудь

da horsie
05.03.2018
18:58:32

Maksim
05.03.2018
18:58:35

Bohdan
05.03.2018
18:59:07

Evgeniy
05.03.2018
18:59:08
а вот пример с результатом
`
$user = $service->getUser();
if (!$user->isHaveResult())
throw InvalidArgumentException;
$user = $user->getResult();

da horsie
05.03.2018
18:59:12

Evgeniy
05.03.2018
18:59:28
вон я пример написал