@oop_ru

Страница 544 из 785
Maksim
05.03.2018
18:59:44
Evgeniy
05.03.2018
18:59:51
так ты на телефоне лучше напиши)

Bohdan
05.03.2018
19:00:05
сам подход жутковат, а не именование
я встречаю такое не первый раз, так что не настолько и жутко

так ты на телефоне лучше напиши)
как минимум неоднозначный $user :) но это так, придирки

Google
Maksim
05.03.2018
19:00:52
формально, с исключениями дела обстоят так же. Тонна всяких типов, все дела. Но оно как-то всё проще смотрится, имхо

Bohdan
05.03.2018
19:01:00
возврат объекта как результата тоже имеет право на жизнь правда, колво бойлерплейт-кода будет немалым

формально, с исключениями дела обстоят так же. Тонна всяких типов, все дела. Но оно как-то всё проще смотрится, имхо
тут семантика (холивар о ней, юху) я вполне согласен с Евгением в том, что исключения в этом случае - микроскоп и гвозди

хотя вопрос очень спорный

Bohdan
05.03.2018
19:02:49
не, я такое люблю, не зря сегодня закидывал ребят во vue.js чятике про перевод слова "props"

Bohdan
05.03.2018
19:03:24
в джаве есть разделение на фатал эрроры и исключения?

Evgeniy
05.03.2018
19:03:27
хотя это же js

Maksim
05.03.2018
19:03:28
пойду дальше исключения плодить)

Bohdan
05.03.2018
19:03:38
логичней его arguments как то назвать ?
ну, это ведь по мотивам реакта заделано

Evgeniy
05.03.2018
19:03:41
и не runtime

Google
Bohdan
05.03.2018
19:03:44
там есть RuntimeException
оно не ловится?

я про аналогию с пхпшными эррорами

Evgeniy
05.03.2018
19:03:59
ну типо может не ловиться если рантайм

чуть чуть отличается

если исключение не runtime ты обязан его ловить

или ничего не соберется

Bohdan
05.03.2018
19:04:30
ага, уловил

Evgeniy
05.03.2018
19:04:32
если исключение runtime то похуй вроде и код соберется

можно ловить все рантаймы в одном месте

da horsie
05.03.2018
19:04:46
Like
05.03.2018
19:04:50
Ничего личного, но ухадите со своей джавой.

Bohdan
05.03.2018
19:05:04
Evgeniy
05.03.2018
19:05:33
А зачем вообще пытаться закрыть контракт при открытых инвойсах?
имхо для закрытия контракта как раз исключение норм идея наверно

Bohdan
05.03.2018
19:05:35
ну тут толстенькие модели контракт - агрегат для периодов (под каждый из которых ставится инвойс)

Evgeniy
05.03.2018
19:05:45
типо ты такой контракт->закройся()

а он такой пышь, не могу хозяина есть открытые инвойсы

ты типо до закрытия контракта должен проверить ручками инвойсы

и по закрывать их

и только потом закрывать контракт

Bohdan
05.03.2018
19:06:30
инвойсы закрываются не изнутри)

Google
Bohdan
05.03.2018
19:06:40
ну точнее это отдельное действие

Evgeniy
05.03.2018
19:06:42
но если ты забыл закрыть инвойсы то контракт не закрыть

ну ты типо как то так написать должен

da horsie
05.03.2018
19:06:59
думаешь, эта проверка должна быть снаружи?
ну а почему нет? можно что-то типа ActiveUser implements User, StaleUser implements User. у второго есть метод closeContract() у первого - нет. UserRepo.getStaleUsers().map(user => user.closeContract())

Evgeniy
05.03.2018
19:07:45
foreach($contract->getInvoices() as $invoice) { $invoice->close(); } $contract->close();

Evgeniy
05.03.2018
19:07:59
вот в случае чего контракт должен вылетать с исключением

или сделать

Bohdan
05.03.2018
19:08:06
инвойс должен быть оплачен

точнее, если он оплачен - он закрыт

можно так сказать

Evgeniy
05.03.2018
19:08:35
$contract->closeWithInvoice() и тут уже в начале инвойсы находятся и закрываются потом инвойс

если инвойсы закрыть низя то такого метода может и не быть

Bohdan
05.03.2018
19:09:02
если инвойс не оплачен - мы не можем закрыть контракт юзер (админ) должен вручную пойти и сказать, что такой-то клиент бабки в кассу занес (ну или инфа об этом придет извне)

Evgeniy
05.03.2018
19:09:03
если инвойс без оплаты низя закрывать

ну тогда логично тут исключение кинуть

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

и то что сейчас происходит это неведома магия или кто то подставил ид инвойса ручками или еше какой странный маловероятный пиздец

Evgeniy
05.03.2018
19:10:56
Google
Bohdan
05.03.2018
19:11:01
там есть уже нюансы в реализации, лучше не вдаваться я заказчика не во всех решениях понимаю и не на все решения влиять могу, потому иногда приходится делать, как просят)

Evgeniy
05.03.2018
19:11:04
и чтобы рядом с ним кнопка была закрыть

Bohdan
05.03.2018
19:11:11
смотри

da horsie
05.03.2018
19:12:16
блин только недавно на эту тему видос смотрел

но забыл как называется

Evgeniy
05.03.2018
19:12:40
имхо мне кажется тут надо как раз применить исключение при невозможности закрыть

Bohdan
05.03.2018
19:12:52
варианты: 1. исключение 2. возврат bool 3. возврат класса (по сути, расширенное 2) 4. монады (тоже близко к 2 и 3)

Evgeniy
05.03.2018
19:12:57
так как нам пришла команда закрыть то что нельзя закрывать

Bohdan
05.03.2018
19:12:58
ну и 5. вынести проверку наружу

Like
05.03.2018
19:13:08
блин только недавно на эту тему видос смотрел
Почему ты так сильно разбиваешь сущности?

Evgeniy
05.03.2018
19:13:08
имхо должно быть 1 и 5

в бэкенде должно быть исключение

а чтобы исключения не вызывались не надо отображать кнопку во фронте на закрытие инвойса

Evgeniy
05.03.2018
19:14:46
надежно я бы сказал

и не надо ебаться с текстом ошибки для юзверя почему с его действием его послали нахуй

или во фронте сразу писать, для закрытия контракта надо оплатить счета и список счетов показать

Like
05.03.2018
19:15:34
Evgeniy
05.03.2018
19:16:02
хочет выводить ее без отправки в бэк

Bohdan
05.03.2018
19:16:03
фактически все это одно и то же мы знаем, что там может произойти ошибка (знаем потому, что закрываться контракт может и автоматически по крону) исключение - мы ловим его в catch буль - проверяем ифом объект ответа - проверяем класс или содержимое монада - хз, я достаточно еще не вник, но в версии с php, как понимаю, близко к объекту ответа вынести проверку наружу - получаем тупо тот же if и обработку ошибки

Google
Bohdan
05.03.2018
19:16:11
суть остается одной и той же

Evgeniy
05.03.2018
19:16:39
еще раз

da horsie
05.03.2018
19:16:41
Почему ты так сильно разбиваешь сущности?
а почему нет? юзеры разные, с ними можно делать разные вещи

Evgeniy
05.03.2018
19:16:50
у тебя есть бэкенд и пользователи (фронтенд и крон)

пользователи не должны закрывать контракты с открытыми инвойсами

Bohdan
05.03.2018
19:17:23
тут с я тобой соглашусь

Evgeniy
05.03.2018
19:17:24
если такое происходит для бэкенда это исключение или ошибка (тут сам решай)

Bohdan
05.03.2018
19:17:27
кнопку спрятать не проблема

Evgeniy
05.03.2018
19:17:36
пользователи должны иметь возможность проверить

контракт на открытые счета

типо /contract/34/invoices?isOpen=true

и перед закрытием проверять

если какой то распиздяй фронтендер или кто то забыл добавить эту проверку

то ничего фатального и неисправимого не произойдет

логер бэкенда залогирует исключение (они же у вас логируются?)

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

da horsie
05.03.2018
19:19:49
если это между фронтом и беком, то я бы просто возвращал результат операции "не могу закрыть из-за инвойсов" потому что это вполне себе допустимый случай

это даже ошибкой назвать сложно.

нормальный такой себе workflow

Evgeniy
05.03.2018
19:20:32
ну типо код ответ ошибка (не завершилось успешно) и message

Bohdan
05.03.2018
19:20:42
ненене

смотри

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