Size: a a a

2021 January 14

ДБ

Дмитрий Башинский... in F# Chat
окей в F# мы напишем больше чистых функций и будет юзать эти статик функции
let result = ModuleName.DoWork(...)
и таких модулей будет так же много, только модули идут как не явные зависимости
источник

AT

Anton Ternavsky in F# Chat
gsomix
Почему бы не вести дискуссию в соседнем чате?
Однозначно!
источник

ДБ

Дмитрий Башинский... in F# Chat
эти интерфейсы явнее
источник

ДБ

Дмитрий Башинский... in F# Chat
как мне кажется
источник

AT

Anton Ternavsky in F# Chat
Дмитрий Башинский
окей в F# мы напишем больше чистых функций и будет юзать эти статик функции
let result = ModuleName.DoWork(...)
и таких модулей будет так же много, только модули идут как не явные зависимости
А может просто не надо создавать класс, в котором столько зависимостей? Если архитектура пляшет вокруг Event Sourcing с CQRS, то там такого трешака не будет(хотя возможен другой трешак правда, но с этим тоже понятно как бороться).
источник

ДБ

Дмитрий Башинский... in F# Chat
Anton Ternavsky
лол. нет, не так и на шарповских проектах с миллионной кодовой базой. А там где есть(всякое случается)-с этим борятся, денно и нощно, карают на ревью и прочая.
один из способов борьбы не писать все на сервисах и юзать CQS к примеру с MediatR, есть ещё варианты борьбы?
источник

I

Igor in F# Chat
Дмитрий Башинский
в соседнем чате кинули "бест практис"
Не обязательно.
Ведь такое месиво от того что в ООП не разделяют эффекты и логику.
По этому там огромно кол-во того что нужно закрывать интерфейсами.
источник

AT

Anton Ternavsky in F# Chat
Дмитрий Башинский
как мне кажется
Вопрос привычки и только.
источник

ДБ

Дмитрий Башинский... in F# Chat
Igor
Не обязательно.
Ведь такое месиво от того что в ООП не разделяют эффекты и логику.
По этому там огромно кол-во того что нужно закрывать интерфейсами.
но ведь даже переписав этот код у тебя будет столько же зависимостей если не больше
источник

ДБ

Дмитрий Башинский... in F# Chat
часть из них чистые модули
источник

ДБ

Дмитрий Башинский... in F# Chat
часть из них вообще не чистые
источник

I

Igor in F# Chat
Дмитрий Башинский
но ведь даже переписав этот код у тебя будет столько же зависимостей если не больше
Если ты вычленишь из них "эффекты", то найдешь уникальных гораздо меньше.
чем текущая комбинаторное произведение логики * эффекты (когда у тебя все грязное).

Эти эффекты и надо будет выносить через DI, а "чистую логику" можно напрямую вызывать.
источник

AT

Anton Ternavsky in F# Chat
Дмитрий Башинский
один из способов борьбы не писать все на сервисах и юзать CQS к примеру с MediatR, есть ещё варианты борьбы?
Ну вот, ты сам ответ написал-CQRS, и это работает. Правда в тех проектах что CQRS был-свои костыли были, гораздо более адекватные, чем MediatR
источник

AT

Anton Ternavsky in F# Chat
Igor
Не обязательно.
Ведь такое месиво от того что в ООП не разделяют эффекты и логику.
По этому там огромно кол-во того что нужно закрывать интерфейсами.
Да все разделяют, наследование интерфейсов и наследование реализации-разные же вещи.
источник

ДБ

Дмитрий Башинский... in F# Chat
"чем текущая комбинаторное произведение логики * эффекты"
вот это крутой аргумент
источник

AT

Anton Ternavsky in F# Chat
Просто в данном случае вангую эти интерфейсы легко заменяются конкретными реализациями, т.к. только одна реализация у конкретного интерфейса есть. А сами интерфейсы воткнули, потому что DI во все поля.
источник

АП

Артем Просвирнин... in F# Chat
Anton Ternavsky
Просто в данном случае вангую эти интерфейсы легко заменяются конкретными реализациями, т.к. только одна реализация у конкретного интерфейса есть. А сами интерфейсы воткнули, потому что DI во все поля.
И юнит тесты с моками
источник

AT

Anton Ternavsky in F# Chat
Igor
Если ты вычленишь из них "эффекты", то найдешь уникальных гораздо меньше.
чем текущая комбинаторное произведение логики * эффекты (когда у тебя все грязное).

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

ДБ

Дмитрий Башинский... in F# Chat
ага, интересно что проекты на F# я так и пишу, чистые модули, сервисы это связка домена с инфрой (к примеру репозиторий который умеет с доменными моделями работать) и комманд хендлер per  Aggregate
в зависимостях 2-3 штуки
источник

AT

Anton Ternavsky in F# Chat
Артем Просвирнин
И юнит тесты с моками
Зависит от стратегии тестирования, иногда интеграционные тесты прямо по юзкейсам с fuzzy данными заруливают напрочь все, при этом тесты не хрупкие, позволяют и бенчмарчить адекватно на реальных кейсах, причем сразу интегрально.
источник