
Sergey
25.02.2017
13:22:24
ну то есть что бы максимально быстро можно было бы обкатывать концепции
у меня есть на примете
что-то типа "клон инстаграма" небольшой
у тебя будет там сущности 3-4

Google

Sergey
25.02.2017
13:22:54
а выборок можно нагенерить миллион и 3 базы данных для этого юзать)

Evgeniy
25.02.2017
13:23:12
ага
кстате насчет разных бд, обычно данные кэшируются в разных nosql
и тд
вот это все вместе должно сочитаться как то

Sergey
25.02.2017
13:25:12
ну у меня кейс сейчас, поиск идет в elasticsearch и мне просто возвращаются id-ки и я потом тупо из postgresql делаю выборку нужных данных
а для популярных запросов можно кэш для доктрины в редисе сделать

Evgeniy
25.02.2017
13:26:22
я считаю что всякие доктрины это монстры )))
но это мнение слишком радикально

Sergey
25.02.2017
13:26:36

Evgeniy
25.02.2017
13:26:49
так же как и моя нелюбовь к наследованию среди классов (но не интерфейсов)

Sergey
25.02.2017
13:26:58
они сейчас активно выпиливают код из доктрины но когда случится 3-я версия пока не понятно

Google

Evgeniy
25.02.2017
13:27:15
поэтому думаю надо сделать бложек чтобы объяснять свою позицию
чтобы кинуть ссылку не объяснять
но хорошо что они улучшают

Sergey
25.02.2017
13:28:20
моя позиция совпадает с мнением авторов доктрины:
- наследование хуже композиции
- ставим всем классам final по дефолту
- ORM нужны только для OLTP
- Если вам надо сделать репорт - SQL хороший выбор
а монстр доктрина или нет - если умеешь ей пользоваться дико увеличивается скорость разработки
другой вопрос что если ты пользуешься доктриной как любой другой ORM - то будет плохо
сущности без логики... flush-и в сервисах.... merge/detach выпилят и чудно
они в 3-ей доктрине будут добавлять возможность делать просто TableGateway к слову
ох пойду пилить PR для доктрины

?
25.02.2017
13:36:53
тоесть предлагаетье совсем отказаться от наследования?

Evgeniy
25.02.2017
14:14:14
В большинстве случаев
Наследование в классах в долго срочной переспективе усложняет жизнь обоим классам

Sergey
25.02.2017
14:15:01

Evgeniy
25.02.2017
14:15:09
Особенно родителю

Sergey
25.02.2017
14:15:23
есть исключения, но только 10% случаев когда наследование используется хоть сколько нибудь оправдано
а так в основном "не ну это... наследование что бы дублирование убрать"

Dmitry
25.02.2017
14:30:01
/stat@combot

Combot
25.02.2017
14:30:01
combot.org/chat/-1001071233926

Dmitry
25.02.2017
14:30:03
/stat@combot

Google

Combot
25.02.2017
14:30:03
combot.org/chat/-1001071233926

?
25.02.2017
15:02:03
Ну а как же расширение и/или переопределение некоторых методов базовых классов? Например создание своих исключений

Sergey
25.02.2017
15:02:58
поясни свой пример
ну то есть на конкретике, когда и зачем тебе надо методы переопределять?
и уж тем более зачем свои исключения добавлять?

?
25.02.2017
15:04:10
сейчас

Sergey
25.02.2017
15:04:18
и незабудь почитать про LSP)

?
25.02.2017
15:12:47
Я про это говорю и это чуть ли ни в каждой либке так делают
От на примере symfony, cakephp, guzzle:
https://github.com/symfony/symfony/tree/master/src/Symfony/Component/Config/Definition/Exception
https://github.com/cakephp/cakephp/tree/master/src/Console/Exception
https://github.com/cakephp/cakephp/tree/master/src/ORM/Exception
https://github.com/cakephp/cakephp/tree/master/src/View/Exception
https://github.com/guzzle/guzzle/tree/master/src/Exception
Что думаете по этому поводу?
Ну или другой пример, всеми известная либка https://github.com/briannesbitt/Carbon

Sergey
25.02.2017
15:34:38

?
25.02.2017
15:43:52
Короч если нужно реализовать дополнительную функциональность в стандартных классах без наследования никуда и еще такой вопрос возник прям ща, если наследование это что-то не очень хорошее, что тогда на счет абстрактных классов их тоже лучше никогда или в редких случаях юзать? Ведь без наследования они никто и звать их никак?
Хотя " ставим всем классам final по дефолту" дает ответ, но не полный

Sergey
25.02.2017
16:15:22
абстрактные классы - иногда они полезны, чаще нет.

?
25.02.2017
16:15:48
Которые в самом пыхе

Sergey
25.02.2017
16:15:57

?
25.02.2017
16:17:24
нет конечно

Google

guga
25.02.2017
17:17:06
В жабке все стоновиться резко плохо, если файнал классы писать решили.
У нас как-то развитие фреймворков пошло по другому пути

Sergey
25.02.2017
17:17:41
пока они не научатся имплементить интерфейсы

guga
25.02.2017
17:18:09
Ну если ты хочешь интегрироваться во фреймворки, как обойтись без наследования?

Evgeniy
25.02.2017
17:18:16

?
25.02.2017
17:18:26

Sergey
25.02.2017
17:18:27

Evgeniy
25.02.2017
17:18:33
Трейт это замена копипаста в пхп

Admin
ERROR: S client not available

guga
25.02.2017
17:18:46

Sergey
25.02.2017
17:18:46
просто по другому

guga
25.02.2017
17:19:23
Так за тебя уже сделали абстракт бла-бла

Sergey
25.02.2017
17:19:33

guga
25.02.2017
17:19:36
В котором ты только логику бизнеса написал

Sergey
25.02.2017
17:19:42
завтра тебе сделают интерфейс с дефолтными методами)

guga
25.02.2017
17:19:57

Sergey
25.02.2017
17:20:02
упрешься лишь в обратную совместимость, вот это хороший такой тормоз развития

Google

Sergey
25.02.2017
17:20:18

guga
25.02.2017
17:20:51

Evgeniy
25.02.2017
17:21:25
Они ломаются или меняются

?
25.02.2017
17:21:44
Вы про что?

Sergey
25.02.2017
17:22:03

Evgeniy
25.02.2017
17:22:17
Просто при наследование от стороннего кода от него чложно отвязатся

Sergey
25.02.2017
17:22:35
короч

Evgeniy
25.02.2017
17:22:36
А со временем жто становится ограничением

Sergey
25.02.2017
17:22:53
давайте подытожу свою мысль, а то вы сейчас в рассуждения "а как же быть с легаси" пойдете

Evgeniy
25.02.2017
17:23:03
Это очень холиварная тема

guga
25.02.2017
17:23:06
А как быть с моками и файнал бай дефолт, как вы тут пропагандируете?

Sergey
25.02.2017
17:23:06
НОВЫЙ код надо писать так, что бы от ваших классов не нужно было наследоваться.
если у нас уже на уровне фреймворков предполагается расширения за счет наследования - мы тут ничего не можем поделать
наследование в классах обычно предполагает что... как бы он делает явно не одну маленькую штуку)
ибо иначе маленькую штуку можно было бы заменить другой маленькой штукой

guga
25.02.2017
17:24:50
Ну очень холиварно, но в целом я согласен, что композиции более гибкая

Sergey
25.02.2017
17:25:34
повторюсь на всякий случай - я не говорю что "никогда не надо юзать наследование" - я говорю лишь о том что перед тем как думать в это сторону надо хорошенько так подумать "а можно ли без него"
и в подавляющем большинстве случаев мало того что можно так еще и красивее выходит

Evgeniy
25.02.2017
17:26:36
Но наследование в интерфейсах это норм
Речь только о наследование в классах

Sergey
25.02.2017
17:27:21
да