Обновить
51
0.7

Architect | Lead | Senior Developer

Отправить сообщение

Вы если бы потеряли кошелек с картами, деньгами, правами - будете минимизировать ущерб или как?

Подставьте свои цифры, если не нравится.

Это ближайшая аналогия.

Вот примерно так чистая архитектура должна выглядеть по моему скромному мнению https://github.com/onetsmr/arch/tree/main/ArchOnion

Строго по картинке:

  • Center - это у нас ArchOnion.Domain и ArchOnion.Domain.Common

  • Ring 0 - это ArchOnion.DomainServices

  • Ring 1 - это ArchOnion.AppServices и ArchOnion.AppServices.Dto

  • Ring 2 (самое внешнее кольцо) - это /Infrastructure/ArchOnion.Database и /Presentation/ArchOnion

Правила:

  • Каждая сборка может зависеть только от нижележащей или на своем уровне и ничего не знает о более внешнем кольце по отношению к ней

  • Репозитории только на своем уровне (Ring 2) и ниже не пробрасываются

  • Без инверсии зависимостей, но с DI

  • При переходе между всеми кольцами можно добавить свой набор dto и кучу мапперов. В текущем варианте ArchOnion.Domain сквозные начиная со своего уровня и вплоть до Ring 2, ArchOnion.AppServices.Dto сквозные начиная со своего уровня и вплоть до Ring 2

  • Ну и enums - вечная проблема, они нужны ВЕЗДЕ, если не хочешь копипастить 100500 одних и тех же енумов на каждом уровне. Я их сложил в ArchOnion.Domain.Common, чтобы можно было подключить где угодно уровнем выше. Может лучше переименовать в ArchOnion.Common

Из минусов:

  • Мапперы между dto и eneity мне не нравятся где лежат

  • Организация по категориям, а не по фичам - но тут можно попробовать разбросать все на Query/Command, а там и мапперы будут уже в другом месте

  • Когда эта штука начинает обрастать деталями реальных проектов - там все равно возникает куча сложностей и приходится идти на компромиссы.

Я исхожу из понятия чистой функции. Она принимает параметры, что-то делает с ними и возвращает результат и всегда одинаковый, если подать одни и те же входные данные. Чистая функция не имеет побочных эффектов.

И вот когда вы пробрасываете условный IDataSource в IDomainService.DoWorkMethod в дополнение к данным (dto или entity), да и еще в котором есть IDataSource.SaveChanges, за вызовом которого может стоять ой как много всего (= побочные эффекты) - то DoWorkMethod уже перестает быть чистым.

У вас знания о внешних частях и инфраструктуре потихоньку протекают во внутрь, в домен. Ну обложились вы интерфейсом, DI и IoC, протекло чуть меньше. Ну сделали интерфейс IReadonlyDataSource без SaveChanges - протекло еще чуть меньше. Но проблема все равно остается.

Не говоря уже о том, чтобы все это протестировать надо сделать тонну моков.

Чистая архитектура > Чистый код > Чистая функция.

Вы же знаете задачу про 5 умных пиратов, которые делят сокровища?

Там не дураки сидят. Вот приходит условный Бил Гейтс, который арендует офисы по всей стране к условному Трампу, который строит небоскребы и сдает офисы по всей стране и говорит

- У меня тут сотрудники в офис не ходят, давай мы будем меньше арендовать?

- Ну не, я так не смогу, все теперь не хотят ходить в офис, а мне здания обслуживать, строительство идет, подвиснет все - контракты, штрафы, пени, откаты, десятки тысяч рабочих мест, давай договариваться?

- Ну давай

И вот они договорились на снижение арендуемых площадей на 23,5% (вместо 50%), и на повышение платежей на 17,75%.

А потом Бил Гейтс сидит и думает - ну надо же как-то дозагрузить арендуемые помещения в размере 50-23,5% = 26,5%? Так что давайте-ка дорогие сотрудники будете ходить в офис 3 дня в неделю.

Я во всех сообщениях упоминал про корпорации. У них десятки и сотни тысяч сотрудников. Они могут заметно влиять на рынок аренды.

Даже если корпорация построила свое здание - его все еще надо обслуживать, и либо продавать и строить новое поменьше. Это же столько гемора, проще загнать людей обратно в офисы.

Немного не так, есть 100 тыщ 500 миллионов программистов и других офисных работников, которые раньше ходили в офис.

Теперь условная половина из них работает из дома, потому что им норм.

Корпорации, чтобы зря не платить за аренду офисов должны либо обязать работников вернутся в офис (что сейчас постепенно и происходит), либо наполовину сократить арендуемые площади.

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

Этот кризис как карточный домик потянет за собой и некоторые другие вещи - например услуги клининга офисов, дальше больше - возможно в целом затронет строительную сферу. Смысл строить больше офисных зданий, если упавший в два раза спрос восстановится только лет через 20-30-50, когда родится достаточное кол-во новых людей?

В итоге конечно же со временем все наладится, люди привыкнут, будет новый баланс спроса и предложения. Но это будет потом.

Капец, 13 человеко-часов работы псу под хвост.

? это так не заработает. Кто туда будет ходить?

Всегда были есть и будут кому комфортнее в офисе, а кому дома.

Но почему то корпорации теперь избавляют от выбора. Теперь условно 3 дня в неделю надо быть в офисе.

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

Судя по статье выглядит так, что российские компании жрут кактус и плачут.

Пускай оставляют. Зачем российские компании с ними общаются? В России никого найти не могут?

Наслаждайтесь ?

Чтобы расти в одной компании, должны сложится определенные условия - не быть вечным стартапом, чтобы продукт покупали и росла нагрузка, чтобы зарплату поднимали адекватно, а не согласно официальной инфляции от росстата.

Чтобы сам сениор был любознательным и работал в команде. А то, знаете, бывают такие сениоры 25 летней выдержки из НИИ имени Ленина.

Да и в целом - человек, который всегда писал проекты с нуля и увольнялся до начала эксплуатации; человек который всю жизнь работал только с легаси и ему никогда не приходилось писать с нуля - это разные сениоры.

А как так случилось, что у вас 300+ баз данных без документации?

Так аджаил же ?

Документация может быть устаревшая. То есть все равно проверять запросами.

До 1993 я играл на работе у родителей (денди там не было), а в 1993 уже появился первый домашний комп, вроде 386.

91-95 примерно

А, сега да, все приставки у меня ассоциируются с нарицательным словом "денди".

Если речь про 90-ые - не соглашусь, домашний уже был 386 и немного позже 486. На денди в основном были платформеры, по крайней мере в общем доступе среди моих ровесников, там не было сохранений, а та же самая дюна 2 на компе была заметно круче, чем на денди.

Информация

В рейтинге
1 771-й
Откуда
Россия
Зарегистрирован
Активность

Специализация

Бэкенд разработчик, Архитектор программного обеспечения
Старший
C#
.NET Core
SQL