170 похожих чатов

@Adelf32 У меня есть абстракция (abstract class Component) и Enum

- Component (своего рода глобальный конфигуратор для каждого компонента, а также type-hint там где он нужен).
Мне нравиться твоя идея отказаться от префиксов/постфиксов в названиях классов и интерфейсов: ...Interface, ...Enum, Abstract... etc. В данном случае я хочу сохранить абстракцию с названием Component, но ведь и enum'ы лучше/правильно называть в единственном числе. Как избежать коллизии? При этом не нарушив Dependency Inversion Principle - если я разнесу их по разным папкам, то в случае абстракции все будет ок, но Enum не абстракция, а все классы зависящие от него будут полагаться на конкретный тип. Возможно мне стоит просто смириться с тем что хоть Enum и не будет абстрактным типом, но единственно точкой нестабильности в внутри всей системы?

11 ответов

17 просмотров

Такие вещи как енумы, во и энтити вполне нормально без абстракций использовать

Максим- Автор вопроса
Adel
Такие вещи как енумы, во и энтити вполне нормально...

Ок, допустим, с этим я могу однозначно согласиться на уровне infrastructure, как и DTO, но не VO (уровень домена), Но что если Enum это domain layer - также нормально использовать без абстракции? И все еще остается вопрос о том как избежать коллизии в названии абстракции типа Component и названии Enum? Возможно стоит лучше выстроить иерархию компонентов/папок внутри системы, и конфликт самостоятельно решится...

Максим- Автор вопроса
Adel
Такие вещи как енумы, во и энтити вполне нормально...

Стоит ли относиться к Enum'у как к неизменяемой абстракции или как минимум воспринимать как VO для уровня домена?

Максим- Автор вопроса
Adel
Такие вещи как енумы, во и энтити вполне нормально...

Еще немного обмозговал. Спасибо за ответ!

Максим- Автор вопроса

Хмм, так то да. Только начал их пробовать и пока-что не думал над ними как VO. Но возникает вопрос об именовании, к примеру: что если у нас есть VO - Credentials и type-hint в сущности на Credentials $credentials. Как быть в случае с Enum? Если передадим в type-hint сущности (Credential $credential) например Credential::PASSWORD, то получим только один объект (enum) внутри сущности, но ведь нам нужно два поля: email, password

Максим- Автор вопроса
Максим
Хмм, так то да. Только начал их пробовать и пока-ч...

Так, что пока-что я бы не стал столь уверенно говорить что Enum это ValueObject. Возможно он таковой лишь для VO с одним атрибутом, но если их нужно type-hint'ить > 1 тогда уже лучше использовать обычный объект нужного VO-типа

VO могут содержать друг друга. и ясное дело что енум - это для одного аргумента)

Максим- Автор вопроса
Adel
VO могут содержать друг друга. и ясное дело что ен...

Ок, с этим понятно. Но как быть с Credentials и им подобным VO в реализации через Enum?

Максим- Автор вопроса

VO + Entity через классы

Максим
screenshot VO + Entity через классы

добавь или тип.... или нуллабл сделай...

Максим- Автор вопроса
Adel
добавь или тип.... или нуллабл сделай...

Не уверен что правильно тебя понял, но на скриншоте привел, то как я вижу использование Enum в домене

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта