@oop_ru

Страница 610 из 785
Дмитрий
17.04.2018
21:45:13
DI с new FooClient(new HttpClient(new RetryStrategy())) — если честно, я не оч понял шутку

то есть так делать не надо?
Я даже не знаю, что тут хуже — жёсткий штырь иерархии зависимостей или то, что тут нет DI

da horsie
17.04.2018
21:57:27
Я даже не знаю, что тут хуже — жёсткий штырь иерархии зависимостей или то, что тут нет DI
DI тут есть. а вот решать, когда надо повторить запрос, должен клиент конкретного api, а не условный httpClient. тут я плохое посоветовал

Google
Дмитрий
17.04.2018
21:59:49
DI тут есть. а вот решать, когда надо повторить запрос, должен клиент конкретного api, а не условный httpClient. тут я плохое посоветовал
Создавать равноправные сущности через вложенные new — это инъекция не зависимостей, а технического долга

da horsie
17.04.2018
22:02:20
блин, ну не надо так буквально воспринимать

нет там никаких new

Mykola
17.04.2018
23:59:08
ну все зависит от желания... если надо быстро кое-как зарефакторить, разбиь логику и запросы - то можно и декораторами, и мидлварями... а если стоит задача "создаь идеальное решение", то тут канеш нужно свою суперлибу пилить, уровня guzzle

Дмитрий
17.04.2018
23:59:56
Давно существуют обобщённые способы

Mykola
18.04.2018
00:00:13
ану? жду ссылку

Дмитрий
18.04.2018
00:00:23
Начиная прям со стримов с фьючерсами

Mykola
18.04.2018
00:01:16
у человека все запросы синхронны, к тому же это вебморда

на пхп

при этом логику все равно надо куда-то засунуть, а в стримах и фьючерсах реализовать логику ретрая без колбек-хела тоже надо уметь

Дмитрий
18.04.2018
00:10:37
чтобы реализовать логику _ на _ тоже надо уметь

Maxim
18.04.2018
08:40:44
в чем разница между абстрактным классом и интерфейсом? класс наследуется только 1, в то время как интерфейсов множество можно реализовать

Roman ?
18.04.2018
08:41:17
?

Google
Maxim
18.04.2018
08:41:46
или эта разница строится в понимании при проектировании где испольовать класс, а где интерфейс

мож статья есть какая) за ссылку буду благодарен

Sergey
18.04.2018
09:35:33
надо еще конкретизировать язык

в Java интерфейсы могут иметь реализацию, но не могут иметь стэйт

Adel
18.04.2018
09:59:17
то что класс наследуется только один и ведет к тому, что нужно понимать при проектировании где нужен класс а где интерфейс. у них довольно сильные различия. Правда сейчас чтото все полюбили интерфейсы везде пихать. Что позволяет некоторым наследоваться от того, чего не нужно и имплементить логгер например. т.е. оставляет лазейку наследоваться там, где необходима композиция

правда мы тут это уже обсуждали и мое мнение тут не в почете :)

Maxim
18.04.2018
10:23:26
в одной статье пишут что с одной стороны не разумное использование абстрактных классов решает проблему дублирования кода множественное, но можно нарушить принцип инкапсуляции

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

Dmitry
18.04.2018
12:50:28
в чем разница между абстрактным классом и интерфейсом? класс наследуется только 1, в то время как интерфейсов множество можно реализовать
Разница не техническая, а смысловая. Интерфейс описывает то, что нам нужно от объекта. Как объект должен выглядеть. Как себя вести снаружи. А класс - это уже ближе к самому коду объекта (реализации) внутри. Но по совместительству класс тоже имеет свой интерфейс. А на практике получается https://yiiframework.ru/forum/viewtopic.php?f=34&t=44999&p=225042#p225000

Antoine
18.04.2018
14:47:08
я тут опять со своим дурацким клиентом к сторонним апи... думаю как повышать качество кода. конечно хорошо бы все запросы к апи делать асинхронно через очередь. но есть нюанс, некоторые запросы подразумевают цепочку вызовов. например, сначала нужно получить токен, причёт токен может выдаться не с первого раза и нужно сделать до 5 попыток с паузой 15 сек. после успешного получения токера нужно дёрнуть другой эндпоинт и получить результат. естественно все эти паузы лучше всего переложить на брокера очередей. а вот как оформить цепочки вызовов - вопрос... есть какие-то реализации подобного?

Adel
18.04.2018
14:59:48
есть. у микрософта даже целый фреймворк есть под это дело. wwf.

с нуля тоже можно сделать я думаю. просто очереди и статусы...

и состояния. типа количества прошлых попыток

Antoine
18.04.2018
15:36:11
Слово сага очень плохое для загугла

Google
Maksim
18.04.2018
15:36:40
Слово сага очень плохое для загугла
http://microservices.io/patterns/data/saga.html

Antoine
18.04.2018
15:37:32
Слоожна((

Maksim
18.04.2018
15:38:13
проще, чем кажется)

Sergey
18.04.2018
16:05:31
Слоожна((
если просто - ивенты и некто кто слушает ивенты и паблишит команды.

ивент - факт того что что-то произошло, команда - запрос на действие

Bohdan
18.04.2018
16:38:10
а сага только координирует и отдаёт команды

Sergey
18.04.2018
16:47:17
Да, Сага о процессе, она лишь скрепляет части вместе

ну и каждая часть саги - атомарна, ну то есть если у тебя скажем процесс из 3-х этапов и 2-ой зафэйлился, должно быть совершено дополнительное компенсирующее действие отменяющее/фиксящее зафейленные операции

типа сначала что-то в статусе pending, потом либо done либо failed

Maksim
18.04.2018
16:56:56
Ну, не обязательно. Сага может и не делать ничего изменяющего до финального шага. А копить всё в себе. Зависит от требований и реализации.

Sergey
18.04.2018
16:58:54
не ну она копит че было по идее

ну то есть необходимые данные для последующих команд

Maksim
18.04.2018
17:02:05
Я к тому, что она может, аки транзакция менять данные в процессе жизни (и откатываться в случае факапа), а может ничего не менять вплоть до последнего шага, на котором уже выполнить пачку агрегированных действий. Или не выполнит. Типа, как flush

Данные не внутри саги, а дергать какую-то бизнесс логику.

Maksim
18.04.2018
17:48:07
Ну т.е. философии саг сие никак не противорочит. У меня, например, оба варианта вполне себе сосуществуют

Bohdan
18.04.2018
17:52:05
Ну т.е. философии саг сие никак не противорочит. У меня, например, оба варианта вполне себе сосуществуют
ну в общем - то да, они могут иметь свой стейт, строящийся на базе полученных ивентов

Bohdan
18.04.2018
17:52:58
хочу глянуть редакс-сага, а то его пиарят, но насколько там реально саги - я не знаю

Google
Maksim
18.04.2018
17:54:22
Над самому будет посмотреть что за зверь. Меня текущий вариант устраивает чуть менее, чем полностью, но мало ли

Bohdan
18.04.2018
17:54:25
вернусь домой и оформлю этот конверсейшн в фак-страничку нашу, имхо будет полезно

Над самому будет посмотреть что за зверь. Меня текущий вариант устраивает чуть менее, чем полностью, но мало ли
ну то ведь под фронт заточено, мне просто интересно с теоретической точки зрения

Maksim
18.04.2018
17:55:15
А есть разница между фронтом и бэком?)

Bohdan
18.04.2018
17:56:34
А есть разница между фронтом и бэком?)
с точки зрения теории нет, с точки зрения практики - да) я больше о том, что твоё сообщение звучит как "может заюзаю" но если ты об идеях - тогда да, может пригодиться

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

Maksim
18.04.2018
17:57:28
Не) меня мой говно паб/саб устраивает) Я больше на идеи глянуть. Мб есть какая-то вундерфича

а про разницу... она в первую очередь в восприятии кода и структуры приложения
У нас саг до жопы просто... часть на джаве выполняется, часть в мерзком пхп, часть в голанге... Трудно народу объяснять с помощью каких высших сил и чьей матери это всё рпботает. Но потом втягиваются и все ок)

хочу глянуть редакс-сага, а то его пиарят, но насколько там реально саги - я не знаю
посмотрел, почитал... странная какая-то штука эти ваши фронтэнды

Bohdan
18.04.2018
19:06:55
https://blog.jetbrains.com/pycharm/2018/04/python-37-introducing-data-class/

Pavel
18.04.2018
22:01:06
Слушайте, а что почитать можно по ООП? О том как правильно нужно. Прочита статью старую, про то что геттеры/сеттеры есть плохо, что мол это все не правильно и не ОО. Статья конечно хуйня постная, но задумался, есть ли что-то далше OOP in PHP от занстры

Trk
18.04.2018
23:28:59
У меня есть вот такой вопрос

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

У кого будет больше шанса получить новая работа из этих 2 кандидатах ?

или скажем кто будет цениться больше в рынке

da horsie
18.04.2018
23:33:44
у того, кто сумеет пройти собеседование и дороже себя продать. что именно он до этого делал - дело десятое

Trk
18.04.2018
23:34:41
хмм

скажишь типа нет важная разница

спасибо за ответ

Google
da horsie
18.04.2018
23:49:46
жизнь несправедлива

Antoine
19.04.2018
00:15:29
10 часов лекций, почти всё про ООП)





про мою головоломку с апи, перезапросами и т.п. пока сделал так:

в джобе описываются шаги по порядку, если шаг выбрасывает эксепшен JobException($step, 5, 3); то он повторяется до 3х раз с паузой 5 сек. в итоге логика перезапросов не копируется по всему коду и ей удобно управлять. к тому же можно легко начинать выполнение с любого шага =) критикуйте, кидайте какулями

Darkling
19.04.2018
00:32:35
Кинул какулю за шиворот. Просто так.

Antoine
19.04.2018
00:33:09
ммм, кайф

Darkling
19.04.2018
00:38:17
ммм, кайф
По поводу кода какушатами забрасывать не вижу смысла.

Artem
19.04.2018
03:46:32
если много null особенно

Миша
19.04.2018
04:14:26
Никто не может скинуть ссылки или книгу назвать. Где можно прочитать про различные архитектуры. Я читал Martin Fowler Patterns of enterprise application architecture. Но не нашел там то что хотел.

А то я понял пока, только то, что если приложение сильно расширяется, юзай микросервисы/

Evgeniy
19.04.2018
04:59:14
soa еще

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