@oop_ru

Страница 763 из 785
Sergey
28.09.2018
18:25:48
короч. вывод который я могу сделать - ты свой опыт проэцируешь на всех. Мой опыт говорит что с композицией проще разбираться и проще работать.

Гена
28.09.2018
18:25:52
Я знаю что композиция лучше и гибче, но иногда делаю наследование

Гена
28.09.2018
18:26:22
Ну да или контроллеры

Google
Sergey
28.09.2018
18:26:57
я уже даже контроллеры не наследую особо... хотя это пожалуй единственное место где я допускаю использование оного (тупо бойлерплейт спрятать). Там в целом даже трейты хорошо ложатся

Sergey
28.09.2018
18:27:57
но это больше из-за ограничений фреймворков.... в целом у меня в голове есть вариант на композиции который в разы удобнее (мидлвари. композиция функций, пайплайны, вот это все) но на php так обычно не пишут))) в основном потому что php умирает

Роман
28.09.2018
18:28:19
По моему это и есть реализация визитора?
А я не говорил что это не она

Или ты хотел пример того, как я решил сделать?

Yury
28.09.2018
18:29:11
Я думал ты покажешь как сделал без визитора.

Я не делал реализацию через визитера

Я по другому пути решил пойти

Ну или суть.

В общем новичкам проще разобраться с наследником чем с отдельным классом, который оборачивает его
Имхо прям очень спорное утверждение. Мне кажется, что когда я начинал, механизм наследования было понять сложнее.

Роман
28.09.2018
18:33:01
Завтра с рабочего места опишу. Но общая суть в том, что я пересмотрел иеерархию и разделил ответсвенности таким образом, что отпала надобность в проверке типов

Google
knopkod4v
28.09.2018
18:33:42
Это мое субъективное мнение, если логика классов наследников проста и сам родитель прост как три копейки считаю можно наследование использовать, ещё аргумент, наследование понимает больший процент новичков
По поводу аргумента про новичков. Вот в чём причина - это вопрос. В том ли что наследование проще? Может быть. А может быть в том, что люди начинают взаимодействие объектов с наследования (в конце концов оно есть в тройке инкапсуляции, наследования, полиморфизма, да и чаще всего есть чётко выраженные в языке вещи часто типа extends) изучать.

Bohdan
28.09.2018
18:36:15
Роман
28.09.2018
18:36:55
Как новичок ,не зная магических методов , декоратор построит?
Я как читающий лекции новичкам, замечу что сложность декоратора в объяснение мотивации к использованию так, как и без него можно собрать что-то работающее

knopkod4v
28.09.2018
18:38:16
а потом на собесе спрашиваешь у такого "новичка" ну чето, друже, "что такое ООП" а он тебе "когда наследование инкапсуляция и полиморфизм, наследование это когда я наследуюсь, инкапсуляция это приватный стэйт с геттерами, а полиморфизм - когда наследуюсь
а в большинстве случаев это именно то, что хотят услышать собеседующие. Я обычно сам уточнял "Вы хотите чтобы я рассказал про инкапсуляцию, наследование, полиморфизм?" и в 100% случаев люди кивали головами.

Как новичок ,не зная магических методов , декоратор построит?
а нафиг магические методы в декораторе? о_О Не, ну так можно сказать и "Как новичёк, не зная рефлекшен апи декоратор построит?"?

Гена
28.09.2018
18:42:18
а нафиг магические методы в декораторе? о_О Не, ну так можно сказать и "Как новичёк, не зная рефлекшен апи декоратор построит?"?
Чтобы использовать __call __set и ТД, чтобы не описывать методы самого оборачиваемого обьекта

Sergey
28.09.2018
18:42:36
Мне проникнуться композицией сложнее было
ну то есть опять же - ты судишь по себе. Выборка не репрезентативна. НАследование простое но это лишь самообман что ты понимаешь его

Гена
28.09.2018
18:42:53
Sergey
28.09.2018
18:42:55
я начал подозревать что что-то не то когда ты заговорил про php 5.6

knopkod4v
28.09.2018
18:42:59
Sergey
28.09.2018
18:43:08
тут уже 7.3 выйдет через пару недель

Гена
28.09.2018
18:43:12
Можно руками проксировать все методы

Sergey
28.09.2018
18:43:35
ну это же не обязательное условие реализации декоратора =\
это вообще к декораторам не имеет никакого отношение. Но соглашусь что если бы было как в Kotlin с их delegate - было бы клево

но пыху до этого как до луны

Google
Sergey
28.09.2018
18:44:08
Можно руками проксировать все методы
https://kotlinlang.org/docs/reference/delegation.html - а если так?

Можно руками проксировать все методы
вообще там не должно быть много методов)

но повторюсь - так как в котлине оно намного интереснее конечно...

Гена
28.09.2018
18:45:33
В общем со всем согласен

Но наследование проще понять)))

Bohdan
28.09.2018
18:47:41
не экстраполируй свой опыт на всех

Yury
28.09.2018
18:48:10
Можно сказать что в Go наследование сделано через композицию?

Гена
28.09.2018
18:48:49
Действительно многое зависит от языка

Sergey
28.09.2018
18:48:51
Гена
28.09.2018
18:49:02
Как то не полумал

Sergey
28.09.2018
18:49:22
пых вообще хуевый язык, мерять по ним концепты из компьютер сайнс... ну такое

Yury
28.09.2018
18:49:49
там же структурный тайпинг, там круче
Что такое структурный тайпинг? Не загуглилось.

Sergey
28.09.2018
18:50:32
Что такое структурный тайпинг? Не загуглилось.
https://en.wikipedia.org/wiki/Structural_type_system - там справа еще полезные ссылки на другие варианты систем типов

типа Duck Typing, manifest vs inferred, nominal vs structural,

Sergey
28.09.2018
18:51:44
всем срочно переходить на js? ^_^
ммм... typescript я бы еще понял)

или там если js то с flow

а просто js - опасна

Google
Sergey
28.09.2018
18:52:12
ну и скорее я о том что бы потыкать еще пару тройку языков

для собственного развития

knopkod4v
28.09.2018
18:52:24
нет, у меня на работе только php и js и больше я ни о чём представления не имею, так что методом исключения остаётся только js, только хардкор!

Andrew
28.09.2018
18:52:32
Чтобы использовать __call __set и ТД, чтобы не описывать методы самого оборачиваемого обьекта
разве декоратор не должен имплементить тот же интерфейс, который и оборачиваемый объект?

Sergey
28.09.2018
18:52:52
nuff said, лень не всегда двигатель прогресса.. это такая, недальновидная лень

Bohdan
28.09.2018
18:56:30
твой любимый дарт все равно мертв

Yury
28.09.2018
19:08:57
Я мало пишу на js. Эти инструменты это для функционального стиля больше, верно?

Гена
28.09.2018
19:09:39
разве декоратор не должен имплементить тот же интерфейс, который и оборачиваемый объект?
Должен, но можно обойти интерфейс, используя магические методы, это конечно очень плохая практика, но в небольших проектах можно пренебречь, особенно если нет интерфейса вовсе, а только абстрактный класс)))

Гена
28.09.2018
19:15:20
Да и нет, он может не содержать абстрактных методов

Роман
28.09.2018
19:16:53
И как вы тогда его декарировать собираетесь?

Гена
28.09.2018
19:16:54
Одним словом в пыхе можно делать как угодно

Роман
28.09.2018
19:18:10
Как вы будете декарировать его наследников? Можете пример привести?

Для частичной реализации абстракции

Гена
28.09.2018
19:20:12
Я тоже себе этот вопрос задал)) и мой ответ совпадает с ответом романа, для избежания дублирования кода и методов

Что функции?

Роман
28.09.2018
19:21:02
И где эту функцию разместить? В глобальном прострастве?

Google
Гена
28.09.2018
19:21:18
Функция не метод

Роман
28.09.2018
19:23:01
Вполне возможно что подъехали ФП'шники. Не совсем ещё понимаю кто тут в какой грех подался :(

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

Мне сложно понимать обрывистые реплики, пожалуйста объясни контекст для недалёких :(

Гена
28.09.2018
19:27:52
Это был как пример, что может не быть интерфейса вовсе , конечно случай не совсем правильный

Роман
28.09.2018
19:27:57
А то у меня складывается впечатление что ты в чём-то разбираешься, но я не могу понять в чём

Это был как пример, что может не быть интерфейса вовсе , конечно случай не совсем правильный
Интерфейс у тебя всегда есть, он может быть не выражен формально, но он есть

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