@oop_ru

Страница 730 из 785
Dmitry
30.08.2018
10:06:19
но DTO НЕ! антипаттерн.
EAV нарушает реляционную теорию из-за обхода типизации ячейки и невозможности достижения консистентности через тот же NOT NULL. Это костыль, хак, аномалия. Также Data Transfer Object нарушает каноническое определение Object в теории ООП как чего-то, имеющего инкапсулированное состояние и поведение. Здесь слово "антипаттерн" воспринимайте в хорошем смысле как аномалию, противоречащую теории.

Sergey
30.08.2018
10:06:56
+1 Спасибо. Некоторые штуки прояснились. Осталось почитать и понять anemic model && value object
- VO имеют поведение, имутабельны и сравниваются по значению. Пример - деньги. Тебе без разницы какая именно купюра у тебя, тебе важен номинал и валюта, причем вместе - Сущности - имеют идентификатор. Пример - ты манетный двор и теперь тебе важно что две купюры одинаковой валюты и номинала это разные купюры (у них есть идентификатор). - Стэйт сущности и VO всегда валидный и поведение объекта гарантирует что стэйт этот будет оставаться валидным и даже на секундочку не станет не валидным. - Анемичная модель - структура данных без поведения (публичные поля или геттеры и сеттеры - не важно) управление состоянием которой происходит из вне. Типичный сценарий использования анемичной модели - это когда у тебя возникает желание "закинуть сущность в валидатор что бы убедиться что стэйт валиден).

Artem
30.08.2018
10:08:34
@funivan только учти, что те же деньги могут быть и сущностью, зависит от ситуации

Sergey
30.08.2018
10:08:34
EAV нарушает реляционную теорию из-за обхода типизации ячейки и невозможности достижения консистентности через тот же NOT NULL. Это костыль, хак, аномалия. Также Data Transfer Object нарушает каноническое определение Object в теории ООП как чего-то, имеющего инкапсулированное состояние и поведение. Здесь слово "антипаттерн" воспринимайте в хорошем смысле как аномалию, противоречащую теории.
да, с EAV согласен что это антипаттерн. Причем именно в плохом смысле. Что до "канонического определения" - для меня твое определение (что объект это инстанс класса) не канон (это определение любителей C++ и симулы), ну или просто незначительно поскольку оно мало чего дает. А вот определение объекта Алана Кея чуть выше. Если что термин "объект" был ДО ООП, и всем было хорошо.

Google
Artem
30.08.2018
10:09:12
Sergey
30.08.2018
10:09:19
Sergey
30.08.2018
10:15:49
для меня ООП это больше про децентрализованные системы. Пример - Erlang, где у тебя есть среда предоставляемая языком и етсь твои "объекты" (микротреды). Аналогичная штука - Akka для java

Dmitry
30.08.2018
10:17:03
это не определение Алана Кея)
Да, а определение каких-то технических неадекватов. На него мне пофиг.

Sergey
30.08.2018
10:17:05
микросервисы - тоже могут восприниматься как объекты, если сделаны правильно

ибо сейчас ты звучишь как технический неадекват) ибо в определении "объект это штука которая включает в себя структуру данных и поведение для работы с этими данными" можно заменить на "модуль" и в целом тогда нет разницы ООП у тебя, процедурщина или фп. То есть это слишком техническое определение которое привязано к конкретной реализации в конкретном языке

то есть подобные определения банально не несут никакой практической ценности

и да. если что весь этот чат создавался что бы толпой разобраться "что же блядь такое это ООП"

Dmitry
30.08.2018
10:20:45
для меня ООП это больше про децентрализованные системы. Пример - Erlang, где у тебя есть среда предоставляемая языком и етсь твои "объекты" (микротреды). Аналогичная штука - Akka для java
Для меня ООП – это модульность с разделением по ответственностям. Со слабосвязанным общением друг с другом. А там хоть классы, хоть процедуры, хоть ассемблер, хоть умные унитазы.

Google
Bohdan
30.08.2018
10:21:27
Artem
30.08.2018
10:21:40
надо на работе задатьвопрос "Что такое ООП?" И посмотреть что ответят ?

Bohdan
30.08.2018
10:22:25
надо на работе задатьвопрос "Что такое ООП?" И посмотреть что ответят ?
можешь начать с "наследование или композиция" и требовать объяснить, почему

Sergey
30.08.2018
10:22:29
Для меня ООП – это модульность с разделением по ответственностям. Со слабосвязанным общением друг с другом. А там хоть классы, хоть процедуры, хоть ассемблер, хоть умные унитазы.
то есть в твоем виденьи нет никакой разницы между ООП и не ООП на уровне рантайма и вся разница выражается только в коде. Ни тебе повсеместного late binding, ни тебе децентрализации (потому что всегда есть main рутина)

Artem
30.08.2018
10:23:05
можешь начать с "наследование или композиция" и требовать объяснить, почему
судя по собеседованию мне врядли что-то вразумительное ответят. Хотя кто знает

Sergey
30.08.2018
10:23:18
это как rest - "у меня rest потому что я соблюдаю 2 принципа реста из 7-ми - тот который про клиент-серверную архитектуру и стэйтлес"

так же и ооп - "у меня ооп потому что штуки которыми я оперирую называются объекты"

Для меня ООП – это модульность с разделением по ответственностям. Со слабосвязанным общением друг с другом. А там хоть классы, хоть процедуры, хоть ассемблер, хоть умные унитазы.
вот простой тест. Мне просто реально интересен твой ответ на вопрос. Предположим что у меня есть приложение, оч простое, которое реализовано одним объектом. Предположим что это банальный ping сервер, его нельзя разделить на дополнительные объекты (точнее в этом нет смысла) и все что он делает - слушает tcp сокет и отправляет всем то что прислал.

Можно ли считать такую систему "ООП" или нет? если нет - почему?

упрощая вопрос - "можно ли говорить о ООП когда в системе один объект"

Sergey
30.08.2018
10:32:07
агрегация)
вопрос от @mkusher - почему в ООП комьюнити перепутали термины композиция и агрегация? В том плане что то что подразумевается под композицией в ООП это на самом деле агрегация с точки зрения термина, а агрегация - композиция)

Bohdan
30.08.2018
10:32:56
ты сломал мне моск

Sergey
30.08.2018
10:33:07
const foo = () => {} const bar = (fn) => () => fn(); // aggregation const baz = () => foo() // composition const fooBar = bar(foo)

Артур Евгеньевич
30.08.2018
10:33:29
можно придумать свои термины!

вопрос от @mkusher - почему в ООП комьюнити перепутали термины композиция и агрегация? В том плане что то что подразумевается под композицией в ООП это на самом деле агрегация с точки зрения термина, а агрегация - композиция)
так я не понял какая точка зрения ооп а кака правильная? я так всегда называл: композиция - объекты из которых состоит данных не могут сущетсвовать без родителя агрегация - могут

Aleh
30.08.2018
10:35:32
+

Google
Vit
30.08.2018
10:39:40
@Adelf32 hah
То есть ты прав? (читал вчера ваши дебаты)

f4rt~
30.08.2018
10:40:10
Sergey
30.08.2018
10:41:03
так я не понял какая точка зрения ооп а кака правильная? я так всегда называл: композиция - объекты из которых состоит данных не могут сущетсвовать без родителя агрегация - могут
ну просто композиция функций - вроде понятно что. И поскольку чаще ты работаешь с композицией объектов без состояния (только зависимости) - то в целом все должно быть одинаково

но почему-то это называется агрегацией

Aleh
30.08.2018
10:42:47
При этом корнем агрегата называется штука, которая сама полностью контролит все внутри

Artem
30.08.2018
10:43:12
это чтобы жизнь мёдом не казалась :D

Артур Евгеньевич
30.08.2018
10:43:12
?

Artem
30.08.2018
10:44:37
а шо, чем больше различных терминов, тем больше можно заработать на их разъяснении

f4rt~
30.08.2018
10:47:13
на чем и зарабатывают консультанты
придумал свою концепцию охулиард лет назад @ до сих пор ездишь и объясняешь челам что к чему

идеально же

Bohdan
30.08.2018
10:47:49
вспомним Марко, лол

Sergey
30.08.2018
10:51:05
подобное практикуют всякие аджайл тренеры и скрам мастера - пишут статьи что мол "вы делаете не правильно, заплатите и я вас научу"

главное напугать людей что они делают что-то не так, и тогда они сами прибегут молить о том что бы ты рассказал как надо)

Artem
30.08.2018
10:52:32
вот по поводу композиции и наследования, почитал статью https://www.sicpers.info/2018/03/why-inheritance-never-made-any-sense/ Там автор пишет в конце: If I am using subtypes to tighten up interface contracts, I should be not only allowed to mark a class anywhere in the tree as a subtype of another class anywhere in the tree, but required to do so: once again, it should not be assumed that my subclasses are also subtypes. То есть с одной стороны он говорит, что если наследование используется для типов, то вся иерархия должна использоваться для типов, но тут же добавляет, что не думайте, что сабклассы - это подтипы. То ли я просто запутался, то ли мая непонимать английский =\

Артур Евгеньевич
30.08.2018
10:53:15
хех я помнится начинал переводить эту статью

я так понял что основная мысль что наследование это не удачный термин

это же расширение причем тут наследственность

Дмитрий
30.08.2018
10:54:15
Ну, есть исключения. У IDE от jB нет конкурентов, но они не стагнируют.
Когда там нормальный UI без джавы завезут? Уже пол десятилетия костыль волочится

Google
Sergey
30.08.2018
10:54:24
это же расширение причем тут наследственность
попробуй найти каких публикаций где эту идею впервые начали обсасывать и обсуждения какие на эту тему

Дмитрий
30.08.2018
10:54:50
Вкусовщина.
Нет, наоборот это максимально конкретная претензия

Admin
ERROR: S client not available

Дмитрий
30.08.2018
10:55:13
У них объективно неудобный (ака не нативный) интерфейс, исправлять который они не. считают нужным

Sergey
30.08.2018
10:55:17
Чем плох этот ui?
"этот" это какой?

Дмитрий
30.08.2018
10:55:31
Ты можешь считать его каким угодно, но он остаётся не нативным нигде

Andrey
30.08.2018
10:55:37
Для меня это идеальный интерфейс.

Дмитрий
30.08.2018
10:55:43
Я тебе сказал, почему так считается

Дмитрий
30.08.2018
10:55:47
Мнения не при чём

Andrey
30.08.2018
10:56:13
Удобство и нативность - это ортогональные вещи.

Дмитрий
30.08.2018
10:56:32
UI который не умеет в нативные контролы хотя бы на самом минимальном уровне — костыль

Sergey
30.08.2018
10:56:32
Дмитрий
30.08.2018
10:56:58
*Костыль подразумевает что существует нормальное решение

Andrey
30.08.2018
10:57:15
Sergey
30.08.2018
10:57:21
*Костыль подразумевает что существует нормальное решение
а если нормальное решение приводит к тому что тебе надо в три раза больше работы?

Google
Sergey
30.08.2018
10:57:31
в три раза больше доков

Sergey
30.08.2018
10:57:58
в три раза больше "конфуза" что в статье используется контрол которого нет у пользователя потому что сраный макаеб опять учит виндусятников?

Aleh
30.08.2018
10:58:39
Всем tui

Дмитрий
30.08.2018
10:58:46
Где-то ручкой нам машет веб
Передаёт привет и спрашивает когда люди перестанут волочить костыли с ненативным ui

Andrey
30.08.2018
10:59:40
Так какая кроссплатформенная IDE имеет нативный интерфейс?

Дмитрий
30.08.2018
10:59:57
Хороший вопрос для саморазвития

Andrey
30.08.2018
11:00:11
Ясно. Вопросов больше нет.

Artem
30.08.2018
11:01:13
я так понял что основная мысль что наследование это не удачный термин
Это не объясняет противоречия в предложении. С одной стороны вся иерархия - субтипы, и тут же - не думайте, что сабклассы - это субтипы =\

Дмитрий
30.08.2018
11:01:18
Ясно. Вопросов больше нет.
Я не буду отвечать на провокативный вопрос с изначально негативной коннотацией

Ищи сам

Andrey
30.08.2018
11:02:08
Ищи сам
Смысл? Если появится какой-нибудь достойный продукт, то я о нём из сообщества узнаю.

Дмитрий
30.08.2018
11:02:15
Лол

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