@oop_ru

Страница 543 из 785
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
С чего вдруг это неправильно? Потому, что ты так решил?)
а с чего ты решил что использовать throw правильно?

ну серьезно, заканчивай с водой

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
иоксепшен, велкам
там еще SecurityException который от io не наследуется

и 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, то у меня для тебя плохие новости

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 его еще надо задеплоить успешно

если хочешь про джаву говорить, а не богомерзкий пхп, говори про джаву) мне насрать
мне проще о пыхе говорить ибо на java меньше опыта и последние 2 года на пыхе

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

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
имеешь ввиду прямо RemoveUserResult?
ну прямо да. что за операция у тебя?

Maksim
05.03.2018
18:58:35
имеешь ввиду прямо RemoveUserResult?
жутковато выглядит

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
вон я пример написал

Страница 543 из 785