
Maksim
28.07.2018
18:33:25

Sergey
28.07.2018
18:33:34
https://en.wikipedia.org/wiki/Coupling_(computer_programming)

Maksim
28.07.2018
18:34:00
Стратегия всё ж позволяет подумать, мб есть что-то, что невпихуемое впихнёт)

Artem
28.07.2018
18:38:09
ну да, там упоминается, что бридж для уже готового кода, а стратегия для ещё не написанного, но что-то я упускаю =\

Google

andrew
28.07.2018
18:41:59
а я вот не понял разницу между бриджем и стратегией =\
Бридж структурный шаблон, позволяет выставить структуру классов но не позволяет ее изменить в рантайме, стратегия - поведенческий, можно менять реализаторы в рантайме. Если в бридж прикрутить смену реализаторов то получится стратегия

Artem
28.07.2018
18:43:04
а ещё в русском переводе ужасные названия шаблонов в книге - до сих пор не запомнил, кто там "посредник", прокси или медиатор.
Но на самом деле это всё (в смысле шаблоны) наверное не так важно. Вот наследование vs композиция - важно по-моему и вот тут непонятно, что такое семантика наследования и как её найти =\

Nurik
28.07.2018
18:43:34
Офигеть, тут дисскуссия. А начинали за то, что трейты говно.)))

Artem
28.07.2018
18:46:49

andrew
28.07.2018
18:47:36
Сам принцип шаблона
Мешает
Реализатор передается в абстракцию и все. Дальше его не изменить. А в стратегии можно
Так как стратегия не выстраивает стрктуру а меняет поведение
Как композитный шаблон

Artem
28.07.2018
18:49:05
Сам принцип шаблона
а зачем тогда разные имплементации? В смысле если их нельзя менять - зачем их больше одной и вообще выделять отдельно?

andrew
28.07.2018
18:49:31
А в стратегии реализатор можно в рантайме поменяиь

Google

Nurik
28.07.2018
18:49:51

andrew
28.07.2018
18:49:51
Через сеттер например

militska
28.07.2018
18:50:26
опять же декоратор как то мутно выглядит. как будто лучше максимально избегать сего.
можо притянуть за уши форматирование текста.
но пока из совего опыта не могу найти раузменое применение декоратора

andrew
28.07.2018
18:50:52
Как вариант

militska
28.07.2018
18:51:17
комбинировать типа возможыне поведения наследования, типа
типа множетсвенное наследование для тех у кого пхп
?

Bohdan
28.07.2018
18:51:53
@fes0r Можешь плиз дать совет, как можно грамотно это объяснить людям, которые отвергают мысль, что MVP это начальная фаза проекта, но не "прототип". Потому что я честно говоря, сильно заебался, это объяснять. Ну или наверное потому что, я этого не умею делать.
mvp - это не демонстрация того, как проект будет выглядеть, когда все будет классно
это реализация наименьшего множества функций этого проекта, которая позволит понять ценность проекта

andrew
28.07.2018
18:52:03

militska
28.07.2018
18:52:43
но как то не праивльно налсдеование тут не подохлдит

Bohdan
28.07.2018
18:52:47

Artem
28.07.2018
18:52:59
Через сеттер например
то есть всё-таки реализации отличаются наличием возможности изменения имплементации (сеттер)? о_О

Bohdan
28.07.2018
18:53:03
прототипы - это всякие мокапы и тд

andrew
28.07.2018
18:53:25

Artem
28.07.2018
18:54:28

andrew
28.07.2018
18:58:07

Nurik
28.07.2018
18:58:13

Google

Bohdan
28.07.2018
18:59:06
я и не говорю, что надо делать его неправильно

andrew
28.07.2018
18:59:19

Bohdan
28.07.2018
18:59:33
просто его надо сделать быстро, жертвуя не качеством, а количеством

Nurik
28.07.2018
19:01:31
я и не говорю, что надо делать его неправильно
Ок. Это не особо важно. Важно то, как донести эту блядскую, но в то же время истинно правильную мысль, что: MVP это не ебанное проложение-прототип, а фундамент, на котором будет держаться весь проект. Гибкий и расширяемый Core, который местами говно, но который не на один раз.

Artem
28.07.2018
19:01:46

Bohdan
28.07.2018
19:02:50

andrew
28.07.2018
19:02:51

Artem
28.07.2018
19:06:37

andrew
28.07.2018
19:07:19
И сама абстракция ничего не знает про реализаторы
За исключением интерфейса

Artem
28.07.2018
19:08:06

Nurik
28.07.2018
19:11:47
ну зависит от того, почему они вбили себе в голову эту дурь и как они ее поддерживают
Ну это да, но я больше хочу понять, на что давить и при этом аргументирванно, чтобы обосновать, что нужно закладывать время на создание core системы, которая затачивается под определенные задачи бизнеса, и при этом делать не прототип системы, которую просто выкинут, а его ядро. При этом основная ошибка, что когда проект уже работает, и нужно на проде вносить изменения, то магическом образом, прототип превращается в core. Просто аргументы, типа что потом фичи будут вноситься неебически долго, не устраивает. Нужно что-то более весомое.
Ну или какой-нибудь списочек нафигачить, чтобы можно было ткнуть в лицо, и сказать, вот чем это тебе грозит. И если на этот списочек кладут болт, то посывать нахуй или валить.


Bohdan
28.07.2018
19:31:38
ну имхо первое и главное - объем работы для написания заново
он не компенсирует несколько увеличенный объем работы для написания ядра
второе - качество продукта, если придется сразу продолжать
третье - можно утерять что-то в процессе переписывания
просто если им этих примеров мало - тут уже не уверен, что что-либо спасет
как бы если ты на участке построишь времянку, чтобы хранить инструменты для постройки дома - тебе явно не захочется потом достраивать времянку потому, что "а оно ведь уже и так работает"

Nurik
28.07.2018
19:41:09
Прежде, было все норм, но теперь руководство вбили себе в голову, что если пригласить +10 человек, то проекты магическим образом будут делаться быстрее. Мне кажется, что всё это бесполезно.

Bohdan
28.07.2018
19:41:49
ну в этой ситуации уж точно

Google

Igor A.
28.07.2018
20:39:08
Всем привет. Пытаюсь тут осознать отказ от геттеров и сеттеров. С сеттерами в голове проблем не возникло. А вот с геттерами задался вопросом. Как мне тогда из энтити полчить данные?
В голову пришел какой-то такой метод:
class Post
{
private $name;
public function toView()
{
$view = new PostView();
$view->name = $this->name;
return $view;
}
}
class PostView
{
public $name;
}
Скажите, пожалуйста, хорошая ли это идея?

Bohdan
28.07.2018
20:42:13
скорее, наоборот - вьюшка должна завязываться на сущность
а не сущность на вьюшку

Artem
28.07.2018
20:42:23

Shmaltorhbooks
28.07.2018
20:42:54
А просто прочитать значение свойства никак нельзя?)

Igor A.
28.07.2018
20:43:03

Shmaltorhbooks
28.07.2018
20:43:34
А с сеттерами как разрулил?)

Bohdan
28.07.2018
20:43:42
class PostView {
public $name;
public static function create(Post $post): self {...}
}

Igor A.
28.07.2018
20:43:54

Bohdan
28.07.2018
20:43:55
дальше имхо понятно

Igor A.
28.07.2018
20:44:05

Bohdan
28.07.2018
20:44:21

Artem
28.07.2018
20:48:19
@igor_kamyshev
вообще хз, на таком простом примере получается, что нет смысла вот это вот всё проделывать, т.к. никакой логики в объекте Post нет. Так-то можно наверное и не делать никакого PostView =\ (осторожно, кнопкодавы могут научить тебя плохому!)

Igor A.
28.07.2018
20:50:05

Shmaltorhbooks
28.07.2018
20:52:16
В обязанности логики сущности должно входить приведение самой сущности к вьюхе?

Artem
28.07.2018
20:54:24

Igor A.
28.07.2018
20:54:33

Dmitry
28.07.2018
20:57:52
кто пробовал держать задачи кролика по несколько часов? Держать - в смысле не давать ask

Google

Artem
28.07.2018
20:57:54

Igor A.
28.07.2018
20:58:51

Artem
28.07.2018
21:01:00

Igor A.
28.07.2018
21:02:04

Dmitry
28.07.2018
21:05:25

Alexander
28.07.2018
21:24:59
Есть реализации гидраторов/экстракторов, основанные на этом

Sergey
28.07.2018
21:29:41

Artem
28.07.2018
21:32:04

Sergey
28.07.2018
21:32:45
Ох, минут через 15 доберусь до ноута оформлю мысль

Igor A.
28.07.2018
21:39:13

Alexander
28.07.2018
21:40:32
Но зачем?..
1) проблема доступа к private-полям будет решена
2) вынесешь логику создания DTO в отдельный класс, где ей и место

Igor A.
28.07.2018
21:41:04

Alexander
28.07.2018
21:41:42
вообще хаки через рефлексию это грязно, как по мне, но всегда есть нюансы
например, на хаках с рефлексией DI-контейнеры построены и им живется неплохо

Artem
28.07.2018
21:42:16

Alexander
28.07.2018
21:42:41
ну гидраторы/экстракторы тоже иногда даже используются
https://github.com/Ocramius/GeneratedHydrator например такой
не скажу, что это right way, но имеет право на существование