Size: a a a

2020 June 14

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
то есть отвечая на твой вопрос, разделение файлов нужно закладывать в модули, для которых предполагается большой рост
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
если файл точно останется в пределах условной сотни строк, то преждевременное разделение будет только мешать, часто наблюдаю такое в ссылках на кодсандбокс
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
я правильно понимаю, что паттерн index, state, init нам разрешает связывать “модули” друг с другом? )
источник

AO

Aleksandr Osipov in ☄️ effector
🚀🔬 🚀🔬🚀🔬
я не думаю, что это правильный вопрос)

давай исходить из обратного: при росте приложения рано или поздно файл со сторами неизбежно вырастет до слишком больших величин, допустим я задумываюсь над разделением файлов после ~200 строк, поэтому вопрос скорее ставится так: приложение растёт, файлы со сторами тоже, нужно разделить, как это сделать лучше?
Кстати, читаю много про подход с init файлами и заметил что у меня по сути что-то подобное, но причины тому не циклические импорты, а то что мне нужно держать несколько реализаций для скажем так одного публичного интерфейса.

Так для авторизации у меня есть файл с экспортами публичного API, login, logout, readToken, getSession, session, примерно так. И есть несколько файлов с реализациями, при импорте конкретного файла в них создаются нужные связи. Так для авторизации у меня есть пара файлов jwtAuthFlow и kerberosAuthFlow.

В коде приложения в зависимости от нужды импортирую тот или иной модуль.  Из минусов - так как связи создаются статически при импорте, то нет возможно по условию импортировать нужный файл (динамические импорты не рассматриваю). Была мысль обернуть объявления связей в функцию-фабрику, но это как-то криво. Вот как в таких случаях быть?
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
у меня в проекте нету циклических зависимостей вообще, а где нужно общее состояние, то это определенно вне фич вообще в bootstrap )
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
Aleksandr Osipov
Кстати, читаю много про подход с init файлами и заметил что у меня по сути что-то подобное, но причины тому не циклические импорты, а то что мне нужно держать несколько реализаций для скажем так одного публичного интерфейса.

Так для авторизации у меня есть файл с экспортами публичного API, login, logout, readToken, getSession, session, примерно так. И есть несколько файлов с реализациями, при импорте конкретного файла в них создаются нужные связи. Так для авторизации у меня есть пара файлов jwtAuthFlow и kerberosAuthFlow.

В коде приложения в зависимости от нужды импортирую тот или иной модуль.  Из минусов - так как связи создаются статически при импорте, то нет возможно по условию импортировать нужный файл (динамические импорты не рассматриваю). Была мысль обернуть объявления связей в функцию-фабрику, но это как-то криво. Вот как в таких случаях быть?
О у меня похожий кейс ))
функции-фабрики ок
источник

AO

Aleksandr Osipov in ☄️ effector
Aleksandr Osipov
Кстати, читаю много про подход с init файлами и заметил что у меня по сути что-то подобное, но причины тому не циклические импорты, а то что мне нужно держать несколько реализаций для скажем так одного публичного интерфейса.

Так для авторизации у меня есть файл с экспортами публичного API, login, logout, readToken, getSession, session, примерно так. И есть несколько файлов с реализациями, при импорте конкретного файла в них создаются нужные связи. Так для авторизации у меня есть пара файлов jwtAuthFlow и kerberosAuthFlow.

В коде приложения в зависимости от нужды импортирую тот или иной модуль.  Из минусов - так как связи создаются статически при импорте, то нет возможно по условию импортировать нужный файл (динамические импорты не рассматриваю). Была мысль обернуть объявления связей в функцию-фабрику, но это как-то криво. Вот как в таких случаях быть?
То есть хочется DI, но это не сочетается совершенно со статическим объявлением на уровне модуля
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
мы же createEffect используем, почему бы и не определить createAuth )
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
Aleksandr Osipov
То есть хочется DI, но это не сочетается совершенно со статическим объявлением на уровне модуля
это получается poor man’s DI
источник

AO

Aleksandr Osipov in ☄️ effector
Paruyr🛸🪐🌏
это получается poor man’s DI
Ага, но пока не нашёл лучшего решения
источник

AO

Aleksandr Osipov in ☄️ effector
Ну в целом с фабриками мне понравился подход, но тут не одобряют такое. То есть фабрика принимает объект с публичным апи, а внутри определяет все связи
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
Как не одобряют? далеко ходить не надо, какой-нибудь createThrottle из effector-throttle самая настоящия функция-фабрика
источник

AO

Aleksandr Osipov in ☄️ effector
Возможно надо меньше парится и пробовать разные подходы
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
Paruyr🛸🪐🌏
это получается poor man’s DI
как будто что-то плохое, как будто то, что подразумевается под DI это единственный валидный способ делать связи между сущностями
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
да ну нет конечно
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
DI это poor man's graph linking
источник

P

Paruyr🛸🪐🌏 in ☄️ effector
модули тоже по сути di
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
я именно про это и говорю, я не считаю концепцию di чем либо кроме эмпирически выявленных совпадений, вызванных недопониманием более общей картины
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
«зависимость» это даже на смысловом уровне неверно, кто сказал, что т.н. зависимому модулю эта связь нужна больше, чем предоставляющему зависимость?)
источник

🚀🚀

🚀🔬 🚀🔬🚀🔬... in ☄️ effector
то есть di это просто один из способов представить связи в графе приложения (граф приложения неявно существует у всех, всегда, эффектор просто делает его явным)
источник