В C# есть модификатор доступа internal, который закрывает свойство или метод для всего, кроме текущей сборки (сборка это по сути группа пространств имён). И это чертовски удобно для построения правильной архитектуры по DDD — ты делаешь домен отдельной сборкой без внешних зависимостей, у сущностей закрываешь сеттеры и другие поля модификатором internal, а бизнес-правила с открытыми методами уже пишешь в агрегатах, которые содержат эти сущности. Агрегаты объявлены в той же сборке, так что они могут с сущностями делать что угодно, но слой приложения уже сможет вызвать только метод агрегата.
Пример. Есть бизнес-процесс, который включает в себя две сущности: письмо и прикреплённый к нему документ. У каждой из этих сущностей разные жизненные циклы, но письмо можно отправить только в том случае, если статус документа "Согласован". Мы делаем агрегат "письмо с документом" и там public-метод отправки письма сначала проверяет статус документа, а потом вызывает internal-метод отправки в сущности письма. Снаружи (вне домена) вызвать сразу отправку письма невозможно.
Но как эту задачу решают разработчики на других языках? Я совершенно не понимаю, как сделать хорошую архитектуру без internal. Окей, в некоторых языках вообще нет вменяемого ОПП и системы типов, но и к таким ребятам я бы не подходил с вопросами об энтерпрайз-архитектуре. Однако, многие серьёзные проекты пишутся на Java или, скажем, Go, что делают разработчики там? Может, кто-нибудь знает, и расскажет мне в комментариях?
#dev
# The standard string repr for dicts is hard to read:
»> my_mapping = {'a': 23, 'b': 42, 'c': 0xc0ffee}
»> my_mapping
{'b': 42, 'c': 12648430. 'a': 23} # 😞
# The "#json" module can do a much better job:
»> import json
»> print(json.dumps(my_mapping, indent=4, sort_keys=True))
{
"a": 23,
"b": 42,
"c": 12648430
}
# Note this only works with dicts containing
# primitive types (check out the "pprint" module):
»> json.dumps({all: 'yup'})
TypeError: keys must be a string
История(12м) как в Альфа-Банке сокращали размер JSON файла, который передается на устройство для работы SDUI. Решением стала шаблонизация для отказа от одинаковых блоков UI с разными данными
#оптимизация#json
¿Que puede hacer este bot?
@apimaniaBot
Con éste bot puedes crear PDF a partir de páginas web, convertir texto a imágenes, convertir tablas HTML a json y mucho más
Idioma: español
(Visto en @botsgram_cu)
#pdf#web#texto#imágenes#hrml#json