@oop_ru

Страница 319 из 785
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
у тебя есть формы и у тебя есть дверь, тебе по сути больше ничего не надо
Это распространенная ошибка. А потом будут два класса с обязанностями 20.

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

Это распространенная ошибка. А потом будут два класса с обязанностями 20.
ну на данный момент обязанность строго одна и все хорошо. А распространенная ошибка - отсутствие фазы рефакторинга после малейших изменений. 20 минут покодил, 5 минут приберись.

и именно на этом этапе надо применять SOLID-ы и граспы, апфронт не выйдет

а все эти DnsResolver-ы, UserManager-ы это уже симптомы нарушения тех самых "зон ответственности".

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
так как реализовать shape.isFitInto(door) если shape и door - объекты? кто должен "раскрыть" свои параметры?
ну если хочешь вообще красиво - передаешь шэйп в дверь, дверь отдает параметры свои на вход шэйпу и определяет уже шэйп

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

и удобно тестить

а когда появляются двери разной формы - вот тогда веселье

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
Сигнатура может быть такая: isFitIn(ShapeInterface shape): bool
вот снова спрошу, какой смысл для тебя как разработчика в суффиксе Interface?

с точки зрения клиентского кода - нам пофигу что там, как разработчику - тоже

Max
16.08.2017
20:36:13
Тогда можно любую фигуру передать)
Фигура тогда все равно знает про взаимодействие с другой фигурой. Что не есть в ее природе.

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

Max
16.08.2017
20:37:13
вот снова спрошу, какой смысл для тебя как разработчика в суффиксе Interface?
Иначе будет конфликт именования между классом и интерфейсом часто.

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
Абстрактный класс Shape
а зачем он тебе?)

конкретно в нашем примере он не нужен

вводить его просто так - бредовая затея

ну и назови его если хочешь 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, он адекватен. Твое дело называть все, как хочешь.

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
CustomerInterface и Customer — пример из жизни.
а интерфейс зачем тогда? если судя по названию реализация всегда одна

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

Sergey
16.08.2017
20:50:13

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