
Saen
16.08.2017
17:27:58
если решение принимает ктото третий то это считай менеджер

Max
16.08.2017
17:28:07
Хороший пример — это как в играх происходит определение столкновения двух объектов.
Это не делает ни один из объектов.

Sergey
16.08.2017
17:28:33
потому что там процедуры выполняющиеся на GPU?)

Google

Max
16.08.2017
17:29:03

Saen
16.08.2017
17:29:14
да, я просто не знаю как это еще называют)

Sergey
16.08.2017
17:29:16
ну короч менеджеры - это не ооп

Max
16.08.2017
17:29:29

Saen
16.08.2017
17:29:40
что есть ООП тогда?

Max
16.08.2017
17:30:10

Sergey
16.08.2017
17:30:18
что есть ООП тогда?
message passing, late binding. Аналогия - распределенная система компов. Каждый обладает своей изолированной памятью и хранит данные. Они могут обмениваться сообщениями по сети.
и именно на этом этапе надо применять SOLID-ы и граспы, апфронт не выйдет
а все эти DnsResolver-ы, UserManager-ы это уже симптомы нарушения тех самых "зон ответственности".

Max
16.08.2017
17:34:42

Saen
16.08.2017
17:35:29
может потому что ей нужно знать о двери

Sergey
16.08.2017
17:35:48

Google

Max
16.08.2017
17:35:50
Тогда это нечто большее, чем просто фигура.

Saen
16.08.2017
17:35:54
это знание в любом случае гдето должно быть
ща нам лекцию про декомпозицию зальют. внимательно

Max
16.08.2017
17:36:22
Вы можете описать класс "фигура, знающая о двери" тогда это будет справедливо и правильно.

Sergey
16.08.2017
17:36:39
Тогда это нечто большее, чем просто фигура.
типичная ошибка - соблюдает объект принцип единой ответственности или нет можно определить ТОЛЬКО зная контекст. В данном контексте фигура должна знать о двери ибо кроме как узнать влазит или нет нам ничего не требуется
и нам не нужно отражать это в названии фигуры

Saen
16.08.2017
17:37:33
вощем, жидная тема. но чтото тут есть. я подумаю над этим. а пока что жрать.

Sergey
16.08.2017
17:37:53
аналогично, приятного аппетита всем кто собирается жрать

Max
16.08.2017
17:38:12
Тогда вы сами себя обманываете. Называете фигурой то, что ей не является. Для упрощения. Отсюда появляются обманутые ожидания ваших колег. Они-то не ожидают, что фигура знает про дверь.

Sergey
16.08.2017
17:38:58
должен ли "банкомат" знать о "деньгах"?
должен ли разработчик пишущий софт "определяющий входит ли фигура в дверь" понимать что есть фигура и есть дверь и у них какие-то отношения?
можно сделать по другому

Max
16.08.2017
17:40:30
Да и да, это их составляющие, как комплексных объектов.
Дверь не есть частью фигуры.

Sergey
16.08.2017
17:41:10

Max
16.08.2017
17:41:37
Они существуют, да. Одно другому не мешает.
Колесо тоже отдельно может существовать. Но это и часть машины.

Google

Sergey
16.08.2017
17:42:47
и тут вопрос в жизненном цикле
более того, "представляют объекты реального мира" != "действуют как таковые"
мне надо поведение от объектов и больше ничего

Ivan
16.08.2017
17:48:55
так как реализовать
shape.isFitInto(door)
если shape и door - объекты?
кто должен "раскрыть" свои параметры?

Saen
16.08.2017
17:49:28
консенсуса нет. делай как считай нужным;)

Ivan
16.08.2017
17:49:57
shape.isFitInto(width, height)

Sergey
16.08.2017
17:50:12
так у тебя все максимально закрыто
и удобно тестить
а когда появляются двери разной формы - вот тогда веселье

Ivan
16.08.2017
17:51:14
тогда нужно знать о каждой возможной форме

Sergey
16.08.2017
17:51:15
хотя в этом плане даже проще - у тебя дверь тоже формой становится
двери?
ей нужен только интерфейс

Saen
16.08.2017
17:51:48
оо двери в шейп и мир падает в бесконечность
отл сценарий к фильму-катастрофе

Андрэ
16.08.2017
18:29:27
House::shapeFitIntoDoor(shape, door) и хватит мучаться. Нате вам другой боли

Mr.
16.08.2017
19:21:10
Где, по вашему мнению, лучше всего объясняется MVVM (c#)?

Google

Jan
16.08.2017
20:34:23
Тогда можно любую фигуру передать)

Sergey
16.08.2017
20:35:16
с точки зрения клиентского кода - нам пофигу что там, как разработчику - тоже

Max
16.08.2017
20:36:13

Jan
16.08.2017
20:36:21
Это сейчас чтоб понятно было, что это интерфейс, а не реализация :)

Sergey
16.08.2017
20:36:30

Jan
16.08.2017
20:36:55

Max
16.08.2017
20:37:13

Sergey
16.08.2017
20:37:43

Admin
ERROR: S client not available

Sergey
16.08.2017
20:38:01
вот есть у тебя интерфейс Shape и какой тут может быть конфликт?
у тебя там дальше "конкретные" формы пойдут

Max
16.08.2017
20:38:26
Абстрактный класс Shape

Sergey
16.08.2017
20:38:34
конкретно в нашем примере он не нужен
вводить его просто так - бредовая затея
ну и назови его если хочешь AbstractShape

Max
16.08.2017
20:39:08
Мы о нашем примере или вообще про интерфейсы?

Sergey
16.08.2017
20:39:18

Google

Max
16.08.2017
20:39:20
Почему тогда здесь вводить префикс?

Sergey
16.08.2017
20:39:47
просто как по мне когда идет конфликт именования класса и интерфейса то кто-то там лишний либо класс надо переименовать
когда узнаю - переименую во что-то нормальное

Max
16.08.2017
20:40:21
Ну, ладно, это все на вкус и цвет. Мне нравится psr, он адекватен. Твое дело называть все, как хочешь.

Sergey
16.08.2017
20:40:35

Max
16.08.2017
20:41:28
Ок, только не навязывай

Sergey
16.08.2017
20:42:03
чаще всего ответ "прост"
меня такое не устраивает) вот когда человек сможет обосновать свой выбор тогда я отстану, даже если этот выбор мне будет не нравиться

Max
16.08.2017
20:44:26
Ок, суффикс Interface и префикс Abstract существует для избежания конфликтов и унификации нейминга. Если вводить суффикс только по-необходимости, получится несогласованность в названиях. Поэтому приняли такое соглашение в psr. Это я называю здравым смыслом.
CustomerInterface и Customer — пример из жизни.

Saen
16.08.2017
20:47:58
о

Aleh
16.08.2017
20:48:00
не улавливаю про конфликты

Saen
16.08.2017
20:48:03
да вам бы на ринг по хоже)
уходил, вы чет трете, пришел, все вы же

Aleh
16.08.2017
20:48:34
если у вас есть только одна реализация интерфейса и вы не знаете чем уникальна эта реализация, то может вы поторопились с созданием интерфейса?

Sergey
16.08.2017
20:49:08

Max
16.08.2017
20:49:32

Aleh
16.08.2017
20:49:42
если вы точно понимаете, что да, этот интерфейс должен отделять вас от страшной детали реализации, то вы должны понимать, что ж это за деталь такая

Sergey
16.08.2017
20:50:13