@oop_ru

Страница 456 из 785
Sergey
18.01.2018
18:52:31
например)

эрланги, элексиры, акки

вжух так

"Ваше ООП говно! Даже Алан Кей от вас отвернулся! Только экторы!"

Google
Sergey
18.01.2018
18:53:53
потому что у него были доклады на эту тему) и в целом именно с этого его популярность и началась) никто не помнит других челов которые говорят примерно то же самое но менее радикально
А я думаю что прицепился он после того как Егор разбомбил утилитные классы и DTO. Мол это все - даже не объекты. Так и что. Утилитный класс реально объект чтоли?

Нет - ну серьезно. Он же просто модуль с процедурами. Как раньше в сях лабали так и щас, тока классом еще обозвали.

Sergey
18.01.2018
18:55:14
объект обладающий характеристикой "случайный кохижен"
Хм... с этим сложно спорить... окромя того что случайный кохежен - дно.

Sergey
18.01.2018
18:55:35
что до DTO - это больше вопрос к любви к слоям
А DTO тоже через кохежен можно обосновать

Sergey
18.01.2018
18:55:54
там нет поведения

это просто структура данных

Sergey
18.01.2018
18:56:42
Если DTO это реально структура с геттерами сеттерами, которая суть кусок данных который передается из сервиса в сервис, то это стамп каплинг. Терпимо но не идеал

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

Google
Sergey
18.01.2018
18:57:51
Sergey
18.01.2018
18:57:57
> из сервиса в сервис а зачем из сервиса в сервис?

из сервиса в сервис - это процедурщица. между "экторами" - это уже больше похоже на DTO.

ну или HTTP запрос в DTO замэпить

удобно

Sergey
18.01.2018
18:58:38
> из сервиса в сервис а зачем из сервиса в сервис?
Ну пускай из слоя в слой. Хотя ИМХО тут все зависит от того как определить термин "модуль"

Sergey
18.01.2018
18:59:02
Ну пускай из слоя в слой. Хотя ИМХО тут все зависит от того как определить термин "модуль"
ну я бы сказал что это штуки которые ходят между оооочень большими модулями. Аля протокол.

типа как http например обладает своим форматом для сообщений

Sergey
18.01.2018
18:59:13
Ну так вот - я не договорил
Если какой нить чудак додумается пописать в DTOхах логику, то DTO уже больше не структура, а модуль с дниженским кохеженом и охеренным каплингом. А если вся эта структура еще и мутабельна, то каплинг впридачу temporal

Первый вопрос - если DTO это структура, то на кой ляд в ней геттеры и сеттеры? Чтобы дать соблазн всяким чудакам понавешать туда логику?

Sergey
18.01.2018
19:01:51
Первый вопрос - если DTO это структура, то на кой ляд в ней геттеры и сеттеры? Чтобы дать соблазн всяким чудакам понавешать туда логику?
ну ты сам по сути отвечаешь на свой вопрос - люди не понимают как выражается каплинг и как от него избавиться

http://qualityisspeed.blogspot.com.by/2014/09/beyond-solid-dependency-elimination.html

вот например чувак накидывает

в серии постов

Sergey
18.01.2018
19:02:27
Второй вопрос - если использование DTO в трех и более модулях ведет к их перекрестному каплингу - зачем вообще она тогда нужна? Не проще сразу сделать дата каплинг и передавать только то что нужно через аргументы?

Sergey
18.01.2018
19:03:14
ну или HTTP запрос в DTO замэпить
ИМХО это - единственное оправданное место. При условии что такая ДТОшка напрямую на нижние слои не пойдет.

Google
da horsie
18.01.2018
19:03:15
Первый вопрос - если DTO это структура, то на кой ляд в ней геттеры и сеттеры? Чтобы дать соблазн всяким чудакам понавешать туда логику?
геттеры и сеттеры это не всегда геттеры и сеттеры. например в пыхе они используются как костыль вместо типизпции

da horsie
18.01.2018
19:03:54
именно

Sergey
18.01.2018
19:04:01
ну и зачем тебе это?

Maksim
18.01.2018
19:04:18
сеттеров нет, геттеры есть. Жить проще :)

Sergey
18.01.2018
19:04:21
геттеры и сеттеры это не всегда геттеры и сеттеры. например в пыхе они используются как костыль вместо типизпции
Давайте не будем считать костыли? В джаве их тоже можно оправдать через то что "хибернейт так хочет", но лучше мир от этого они не делают

Артур Евгеньевич
18.01.2018
19:04:55
Я думал в пыхе дто это просто класс с паблик свойствами

Sergey
18.01.2018
19:05:00
А разве в хибернейте маппинг можно применить на голые final поля?

Sergey
18.01.2018
19:05:03
именно
вот есть у тебя DTO с пропертями, типы через phpdoc выставлены, типы ты можешь в конструкторе проверить. Все.

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

Sergey
18.01.2018
19:05:43
Sergey
18.01.2018
19:05:44
А разве в хибернейте маппинг можно применить на голые final поля?
Не - справедливости ради я знаю там есть фича которая ентитю маппит в хашмапу еще, но мы щас о ДТОшках

Maksim
18.01.2018
19:05:51
я не доверяю на столько этим вашим анализаторам(

Sergey
18.01.2018
19:06:04
анализаторы это дополнение к ним а не замена)

Maksim
18.01.2018
19:06:24
пишу) и типы в пропертях перепроверяю)

Bohdan
18.01.2018
19:06:27
вот есть у тебя DTO с пропертями, типы через phpdoc выставлены, типы ты можешь в конструкторе проверить. Все.
еще заныкать new и ваще милость получится точно, надо прикрутить phan будет нормально как раз завтра будет ресерч день

Sergey
18.01.2018
19:07:16
еще заныкать new и ваще милость получится точно, надо прикрутить phan будет нормально как раз завтра будет ресерч день
сразу скажу - производительность phan чувствительна к количеству файлов которые нужно парсить - это количество надо уменьшать. У них в wiki показан пример как

Google
Sergey
18.01.2018
19:07:24
а разве хибернейт так хочет?)
Я к тому что если так уж хоцца смаппить кортежи из базы на структурку, то просто описать иммутабельную структурку без геттеров и сеттеров не прокатит. Хибер такое не схавает (поправьте если заблуждаюсь)

da horsie
18.01.2018
19:07:45
дальше всякие анализаторы тебя ткнут носом в то что ты int туда где boolean нужен пихаешь
1) не все команды достаточно сознательны чтобы доверять анализаторам. 2) рантайм проверка типов помогает находить проблемы в легаси.

ну а геттеры без сеттеров в пыхе это костыльная иммутабельность

Sergey
18.01.2018
19:09:32
Рефлексия -_\.
что тебе не нравится?

для мэппингга данных это самое оно

это как десериализация

Admin
ERROR: S client not available

Sergey
18.01.2018
19:10:53
Ну ок. А как вам такой аргумент. Можем ли мы считать хиберову ентити структурой без логики? Ведь у нее есть лэзи поля в которые хибер складывает определенные ожидания

da horsie
18.01.2018
19:11:04
/** * @var string * @readonly */ public $name;
все тот же аргумент про сознательность

Maksim
18.01.2018
19:11:22
и бесконечная вера в порядочность анализатора

не, в помойку) лучше не давать лишний повод :)

Sergey
18.01.2018
19:12:01
знаю что существует мнение что JPA орудует Pure Fubricated Objects

то есть не доменными моделями

da horsie
18.01.2018
19:12:44
@fes0r тебе, вероятно, удалось собрать свою команду и достаточно хорошо их воспитать. Увы, это не всегда так получается, приходится заниматься defensive programming

Sergey
18.01.2018
19:12:58
а сам я юзаю чуть другую ORM у которой, в силу динамической типизации и мощной рефлексии нет таких проблем как у гибернейта

Google
Maksim
18.01.2018
19:14:21
можно взять обрез и пойти в лес. Шансы нарваться на волка останутся прежними, а вот выйти целым - повышаются

da horsie
18.01.2018
19:16:34
костыле-ориентированное программирование такое. у пыха свой bounded context, геттеры и сеттеры там значат несколько другие вещи)

Sergey
18.01.2018
19:17:08
почему в питоне основной принцип которым оправдывают отсутствие прайватов - we are all adults

короч так себе оправдание

легаси - другое дело

тут не важен язык, но тут и не надо говорить что это значит что-то другое.

просто компромис

Maksim
18.01.2018
19:18:42
судя по всему ты там работаешь с командой первоклассных спецов, которые почему-то не доехали до гугла)

обычные смертные, вроде меня, роскошь в стиле "we are all adults" позволить себе не могут)

da horsie
18.01.2018
19:19:22
почему в js такого нет?) или в питоне?)
потому что в js нет рантайм проверки типов по сигнатуре функции, а в пыхе есть

не всем так повезло

Maksim
18.01.2018
19:21:52
как раз мой опыт подсказывает, что если оставить кучу говна, поставить рядом табличку "не влезь!!11адын!", в неё обязательно наступят. И дай бог если только 1 раз

Sergey
18.01.2018
19:22:32
da horsie
18.01.2018
19:22:35
Sergey
18.01.2018
19:22:37
вот скажи

da horsie
18.01.2018
19:22:57
и там и там есть возможность делать ассерты
ты предлагаешь пихать везде ассерты?

Sergey
18.01.2018
19:23:36
ты предлагаешь пихать везде ассерты?
как ты в php тайпхинтами проверишь что пришедший тебе инт больше нуля?

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