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, когда родится достаточное кол-во новых людей?
В итоге конечно же со временем все наладится, люди привыкнут, будет новый баланс спроса и предложения. Но это будет потом.
Всегда были есть и будут кому комфортнее в офисе, а кому дома.
Но почему то корпорации теперь избавляют от выбора. Теперь условно 3 дня в неделю надо быть в офисе.
По мне так есть две основные причины - подгорает у (эффективных) менеджеров и финансово-экономическая - если половина людей во всех корпорациях перестанут ходить в офис, то половина офисных площадей будет не нужна - а это чревато обвалом рынка коммерческой недвижимости.
Чтобы расти в одной компании, должны сложится определенные условия - не быть вечным стартапом, чтобы продукт покупали и росла нагрузка, чтобы зарплату поднимали адекватно, а не согласно официальной инфляции от росстата.
Чтобы сам сениор был любознательным и работал в команде. А то, знаете, бывают такие сениоры 25 летней выдержки из НИИ имени Ленина.
Да и в целом - человек, который всегда писал проекты с нуля и увольнялся до начала эксплуатации; человек который всю жизнь работал только с легаси и ему никогда не приходилось писать с нуля - это разные сениоры.
Если речь про 90-ые - не соглашусь, домашний уже был 386 и немного позже 486. На денди в основном были платформеры, по крайней мере в общем доступе среди моих ровесников, там не было сохранений, а та же самая дюна 2 на компе была заметно круче, чем на денди.
Вы если бы потеряли кошелек с картами, деньгами, правами - будете минимизировать ущерб или как?
Подставьте свои цифры, если не нравится.
Это ближайшая аналогия.
Вот примерно так чистая архитектура должна выглядеть по моему скромному мнению 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 летней выдержки из НИИ имени Ленина.
Да и в целом - человек, который всегда писал проекты с нуля и увольнялся до начала эксплуатации; человек который всю жизнь работал только с легаси и ему никогда не приходилось писать с нуля - это разные сениоры.
Так аджаил же ?
Документация может быть устаревшая. То есть все равно проверять запросами.
До 1993 я играл на работе у родителей (денди там не было), а в 1993 уже появился первый домашний комп, вроде 386.
91-95 примерно
А, сега да, все приставки у меня ассоциируются с нарицательным словом "денди".
Если речь про 90-ые - не соглашусь, домашний уже был 386 и немного позже 486. На денди в основном были платформеры, по крайней мере в общем доступе среди моих ровесников, там не было сохранений, а та же самая дюна 2 на компе была заметно круче, чем на денди.