В C# есть модификатор доступа internal, который закрывает свойство или метод для всего, кроме текущей сборки (сборка это по сути группа пространств имён). И это чертовски удобно для построения правильной архитектуры по DDD — ты делаешь домен отдельной сборкой без внешних зависимостей, у сущностей закрываешь сеттеры и другие поля модификатором internal, а бизнес-правила с открытыми методами уже пишешь в агрегатах, которые содержат эти сущности. Агрегаты объявлены в той же сборке, так что они могут с сущностями делать что угодно, но слой приложения уже сможет вызвать только метод агрегата.
Пример. Есть бизнес-процесс, который включает в себя две сущности: письмо и прикреплённый к нему документ. У каждой из этих сущностей разные жизненные циклы, но письмо можно отправить только в том случае, если статус документа "Согласован". Мы делаем агрегат "письмо с документом" и там public-метод отправки письма сначала проверяет статус документа, а потом вызывает internal-метод отправки в сущности письма. Снаружи (вне домена) вызвать сразу отправку письма невозможно.
Но как эту задачу решают разработчики на других языках? Я совершенно не понимаю, как сделать хорошую архитектуру без internal. Окей, в некоторых языках вообще нет вменяемого ОПП и системы типов, но и к таким ребятам я бы не подходил с вопросами об энтерпрайз-архитектуре. Однако, многие серьёзные проекты пишутся на Java или, скажем, Go, что делают разработчики там? Может, кто-нибудь знает, и расскажет мне в комментариях?
#dev
#EDU hitting the 12H Time frame trendline, in the case of breakout we will have another bullish new trend on this chart💎
❄️@signals_bitcoin_crypto❄️
❄️@Shadow_support0o❄️
#EDU touched the bottom of bullish channel on 1H Time frame we expect it will save this area and will rise again, totally we will wait for correction on this chart
📉
❄️@signals_bitcoin_crypto❄️
❄️@Shadow_support0o❄️
⚡️Домашка декабря. Большой разбор.
[47 min] #edu
Надеюсь, вы хорошо отдохнули и как раз мозг готов переварить новый разбор. Прошелся по работам участников и дополнительно пояснил особенно важные детали.
Очевидно, самое слабое место в задаче — абсолютно непонятная система карточек: не ясно, что будут за задания, нет возможности сравнить их друг с другом, дополнительные задания не отличаются от остальных, но почему-то скрыты в отдельном списке. Вместе разберемся, как пофиксить. Другие сложности — копирайт и запутанная система прохождения заданий. Неочевидно, что будет на следующем шаге, можно ли его прерывать, менять задания и проходить другие. Кто разобрался, тот разобрался.
Решения участников в FIGMA.
❤️ Всем кто качается на праздниках — отдельный лайк!