@oop_ru

Страница 701 из 785
Bohdan
04.07.2018
19:20:33
Мы тут за software design вообще-то :|
если бы так было всегда

Aleh
04.07.2018
22:57:43
тут больше вопрос в общепринятых подходах и если с этой позиции смотреть то чел дело говорит
он говорит, что это лучший метод, который он нашел при работе с C#

и это странно)

Sergey
04.07.2018
22:58:37
и это странно)
ну так то да, хотя он вроде это говорил только про штуки типа сервис отправки email-ов

Google
Sergey
04.07.2018
22:58:43
но не уверен

но если у него интерфейсы через IUsers то возможно повреждение мозга

мне как бы его мнение относительно ООП не особо интересно)

Aleh
04.07.2018
23:00:30
да просто я не очень представляю, как так можно жить

ты ж в C# при таком подходе теряешь возможность делать полиморфные методы…

и получается процедурщина обычная

Sergey
04.07.2018
23:05:24
и получается процедурщина обычная
раз ты такой умный - сходи и выступи на NDC с какой-нибудь темой "ООП это не только процедуры и данные"

Aleh
04.07.2018
23:05:39
сперва добейся, да(

Sergey
04.07.2018
23:06:00
p.s. он вообще-то там говорил что "но вообще-то это не совсем ООП бла бла" но я в упор не понимаю почему тогда он приводит именно такие примеры

возможно что бы усилить эффект что "ФП лучше!"

или упростить что-нибудь

Aleh
04.07.2018
23:06:27
а пример совсем ооп, где active record это норм?

Google
Sergey
04.07.2018
23:06:50
а пример совсем ооп, где active record это норм?
я походу промотал этот кусок

Aleh
04.07.2018
23:07:18
ну т.е. совсем ооп это active record, ddd эванса это анемичные модели, а единственный вариант юзать c# это юзать менеджеры

Sergey
04.07.2018
23:07:27
опять же - какая разница что мы тут с тобой думаем, важно какой код большинство пишут

Aleh
04.07.2018
23:07:38
да вообще ничего не важно)

Sergey
04.07.2018
23:07:48
в целом да

Дмитрий
04.07.2018
23:22:59
noop

Моя любимая парадигма

Igor
05.07.2018
09:14:48
ну т.е. совсем ооп это active record, ddd эванса это анемичные модели, а единственный вариант юзать c# это юзать менеджеры
Расскажи как правильно, а все что я видел в проде это и были пляски с сервисами вокруг pojo, на всех проектах. И чем больше интерфейсов/индирекшен-вызовов - тем лучше

Sergey
05.07.2018
09:16:38
Расскажи как правильно, а все что я видел в проде это и были пляски с сервисами вокруг pojo, на всех проектах. И чем больше интерфейсов/индирекшен-вызовов - тем лучше
ты же вкурсе про штуки типа whole value и т.д.? ну мол когда ты поведение хранишь там где стэйт для этого поведения. и стэйт дробиться под поведение а не под "не ну а шо, оно ж все про юзера, все туда и положу"

вот если бы еще сообщения были а не вызовы процедур....

Aleh
05.07.2018
09:28:44
Расскажи как правильно, а все что я видел в проде это и были пляски с сервисами вокруг pojo, на всех проектах. И чем больше интерфейсов/индирекшен-вызовов - тем лучше
pojo хорошо, другое дело, что pojo это не объект с публичными полями, он вполне отлично инкапсулирует в себе переходы состояний и может задавать флоу работы

ну т.е. почему бы не делать ровно так, как он предлагает делать в f#: берем UserManager и переносим все его методы в User, а там где нужны зависимости - передаем их(конечно желательно за интерфейсами, дабл диспатчи и все такое) как аргументы в конкретный метод

Sergey
05.07.2018
09:32:36
pojo хорошо, другое дело, что pojo это не объект с публичными полями, он вполне отлично инкапсулирует в себе переходы состояний и может задавать флоу работы
в Java вообще муть с терминологией. Насколько я помню необходимость в термине POJO появилась изза бобов, которые накладывали свои ограничения (типа должно уметь сериализацию).

ну то есть pojo - просто класс без ограничений и требований. Делай что хочешь и как хочешь. В том числе нормальное ООП.

Aleh
05.07.2018
09:33:09
да-да, pojo это без наследования от EntityBean

или как его там

Sergey
05.07.2018
09:33:33
проще говорить что bean это pojo с наследованием от entity bean (или атрибутом)

ну мол, любой класс это pojo но не любой pojo это bean

Google
Aleh
05.07.2018
09:34:28
ну модный термин ж нужен был, чтобы напомнить людям, что можно не наследоваться от всякого говна в вашем домене)

Sergey
05.07.2018
09:34:50
тип того, маркетинг такой маркетинг)

Aleh
05.07.2018
09:38:33
Sergey
05.07.2018
09:39:36
а что по доменом сейчас подразумеваете? ?
https://ru.wikipedia.org/wiki/%D0%94%D0%BE%D0%BC%D0%B5%D0%BD

Bohdan
05.07.2018
09:48:42
с2 иногда невозможно читать - сплошные отсылки

Bohdan
05.07.2018
09:54:09
осталось только понять, почему они плюсы называют CeePlusPlus :D но это так, оффтопик

насколько понял про double dispatch - это фактически перевод рантайм проверки типов в компайл-тайм (и ужесточение оной тем самым) или что-то я не то понял?

Артур Евгеньевич
05.07.2018
09:57:13
осталось только понять, почему они плюсы называют CeePlusPlus :D но это так, оффтопик
помню у нас в универе препод по 1С говорил что если кто то скажет адин Цэ тому пиздец))

F01134H
05.07.2018
09:57:51
Bohdan
05.07.2018
09:58:42
а просто диспатч это что?)
хз ваще :D в примере с фигурами и принтерами - у них там двойная зависимость вышла

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

F01134H
05.07.2018
09:59:02
норм же

еще сипипи наызывают

Sergey
05.07.2018
09:59:14
повысить/понизить связанность => увеличить/уменьшить вероятность изменений зависимых модулей

Bohdan
05.07.2018
10:08:03
Google
Aleh
05.07.2018
10:13:46
ну вот вместо сущности делать dto это не как Эванс описывает, Эванс описывает совсем наоборот)

Igor
05.07.2018
10:14:56
Эх жалко в проде я такого никогда не видил

Aleh
05.07.2018
10:16:05
в языках типа java/c# еще пропадает возможность делать полиморфизм, ведь там нет такого ad-hoc как в хаскелях например

а без полиморфизма это ж процедурщина с громоздким синтаксисом

Admin
ERROR: S client not available

Igor
05.07.2018
10:17:32
https://youtu.be/US8QG9I1XW0
Кстати, на тему "полефрексировать о необходимости ООП/ФП в проде": - https://youtu.be/XBfi3Q74BnE - https://youtu.be/b-Eq4YV4uwc

Aleh
05.07.2018
10:19:36
окей является ли Shape зависимым от Printer? а наоборот?
одно будет знать про другое, скорее всего shape при printer Shape { print(printer) { return printer.write(this.firstField, this.secondField, this.thirdField.toString()) } }

militska
07.07.2018
17:04:47
добрый вечер. Кто нибудь разделял в yii2 ar и бизнес логику, какие варианты/рекомендации есть? наследоваться от AR модели как то так себе вроде есть вариант выделить в отдельный namespace "app/modules/services" бизнес логику(без наследования) и из неё дергать ar модель .

Adel
07.07.2018
18:22:56
вот только такая анемичная модель потом будет аукаться.

Adel
07.07.2018
18:23:34
но это уже хоть какойто шаг в сторону выделения слоев :)

Чем?
я тебе целый день рассказывал уже :)

M
07.07.2018
18:25:07
я тебе целый день рассказывал уже :)
Ты про тесты например? У меня до сих пор руки не доходят по МК репку с практикой накидать :(

Adel
07.07.2018
18:29:46
ну кроме тестов я еще 2-3 вещи могу назвать. но чот я подумал. и все они не прям 100%-ная причина.

ну и во всяких yii и ларавель активрекордах не получится чистую логику выделить. везде будут всякие save() которые портят все

M
07.07.2018
18:32:39
ну и во всяких yii и ларавель активрекордах не получится чистую логику выделить. везде будут всякие save() которые портят все
Ну хотя-бы слои на минималках это уже что-то? А то напихают в AR логики, видишь это и глаз дёргается.

Google
militska
07.07.2018
18:32:45
ну хотя бы всякие мелкие методы/отправки почты/100500 запросов для списков из ar вытащить

Adel
07.07.2018
18:33:19
оо... тут все запущено :)

Sergey
08.07.2018
08:55:20
Ну хотя-бы слои на минималках это уже что-то? А то напихают в AR логики, видишь это и глаз дёргается.
вообще-то суть AR и заключается в том что бы в модель данных пихать бизнес логику

там ассампшен оч простой - AR применим там где логики не очень много. Если у тебя логики больше - можешь заюзать что-то типа Row Data Gateway, то есть у тебя твоя AR либа будет предоставлять тебе модель данных, а сверху обертка (не сервис-менеджер а доменная модель) которая внутри работает со стэйтом

тогда это все более-менее можно тестить и в целом довольно удобно. Если не сервисы-менеджеры.

но если логика нетривиальная - возможно стоит подумать в сторону дата мэпперов. Если логика больше завязана на данные нежели на отношения между данными - можно table gateway и мутить все через SQL

Sergey
08.07.2018
08:59:47
ну и зависит от сложности самой логики. В целом подозреваю что при определенной снаорвке можно где-то 70% задач не через жопу сделать даже на yii. просто вопрос нахер оно надо

code4aman
08.07.2018
09:25:47
Sergey
08.07.2018
09:34:24
Active Record
да знает он что это такое

Aleh
08.07.2018
13:44:14


Mykola
08.07.2018
14:55:00
??

Dmitry
08.07.2018
16:19:38
ну и зависит от сложности самой логики. В целом подозреваю что при определенной снаорвке можно где-то 70% задач не через жопу сделать даже на yii. просто вопрос нахер оно надо
Вы просто забываете какое его основное назначение. Это rad. И для этого он очень крут. Для небольших приложений. А если так случиться что придется сильно наращивать функционал, тут уже в любом случае без сноровки никуда

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