
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

Google

Sergey
30.08.2018
10:08:49

Artem
30.08.2018
10:09:12

Sergey
30.08.2018
10:09:19

Dmitry
30.08.2018
10:13:26

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

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

Artem
30.08.2018
10:23:05

Sergey
30.08.2018
10:23:18
это как rest - "у меня rest потому что я соблюдаю 2 принципа реста из 7-ми - тот который про клиент-серверную архитектуру и стэйтлес"
так же и ооп - "у меня ооп потому что штуки которыми я оперирую называются объекты"
Можно ли считать такую систему "ООП" или нет? если нет - почему?
упрощая вопрос - "можно ли говорить о ООП когда в системе один объект"

Артур Евгеньевич
30.08.2018
10:31:14

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
можно придумать свои термины!

Ivan
30.08.2018
10:34:54

Aleh
30.08.2018
10:34:58

f4rt~
30.08.2018
10:35:15

Aleh
30.08.2018
10:35:32
+

Google

Vit
30.08.2018
10:39:40

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
а шо, чем больше различных терминов, тем больше можно заработать на их разъяснении

Bohdan
30.08.2018
10:45:19

f4rt~
30.08.2018
10:47:13
идеально же

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

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

Артур Евгеньевич
30.08.2018
10:52:17

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

Google

Sergey
30.08.2018
10:54:24

Andrey
30.08.2018
10:54:31

Sergey
30.08.2018
10:54:34

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

Admin
ERROR: S client not available

Andrey
30.08.2018
10:55:03

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

Sergey
30.08.2018
10:55:17

Andrey
30.08.2018
10:55:29

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

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

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

Sergey
30.08.2018
10:55:46

Дмитрий
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
в три раза больше доков

Aleh
30.08.2018
10:57:39

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

Andrey
30.08.2018
10:58:22

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

Дмитрий
30.08.2018
10:58:46

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

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

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

Anton
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
Лол