Pull to refresh

Comments 11

Более интутивно понятный подход в сравниении с FSD

Работала и с проектами на Bulletproof React и с проектами на FSD. Проекты на FSD это кашекод в котором крайне трудно что то искать, в отличие от Bulletproof.

Видно, что автор этого подхода действительно его выстрадал, поработав с десятком проектов на лапшекоде Redux и разочаровавшись в FSD. И в целом сделал логичный следующий шаг, решив несколько проблем легаси-проектов.

Осталась всего сотня-две таких шагов и получится что-то нормальное - без прибивания гвоздями к Реакту, хукам, с нормальной файлогенерацией и автовалидацией, со встроенным эффективным feedback loop для LLM, со стабильными SSR / Widget режимами, без 2-3мб бандла на старте и т.п. И пройдя это все и протестируя на десятках проектов с разного размера командами, окажется что Flat Architecture (я предпочитаю называть "классическая файловая структура") не так уж и плоха, если скомпоновать в формализованные слои.

Но как шаг для борьбы с легаси в условном 2018 году выглядит отлично. Как старт для новых проектов - очень сомнительно.

Я как раз не стал бы использовать flat architecture на новых проектах, если есть четкое осознание что проект планируется вырастить до 100К+ строк кода. Все что меньше - на самом деле без разницы какой подход применять.

Имею удовольствие поддерживать подобный легаси-проект, стартовавший в середине 10х, плоская структура доставляет много боли, потому что люди на проекте менялись и каждый привносил свое видение модулей, не было какой-то единой методологии, дерево из сотен компонентов превратилось в кашу. На подобный проект (новый) прямо сейчас я бы взял или усеченный FSD (отточили на еще одном проекте) или Bulletproof. Скорее второе, т.к. FSD даже на средних размеров проектах вызывает фрустрации внутри команды. Bulletproof в этом плане выглядит проще и интуитивно понятнее.

Между UI State и Application State в некоторых более-менее сложных приложениях есть еще один уровень стейт менеджемента - это локализованные состояния для группы компонентов связанных между собой горизонтально и/или вертикально. Назвать ее можно как угодно: Widget State, Feature State. Это в основном композиции из нескольких компонентов которые все вместе образуют какой то цельный виджет или логику. Выносить состояния на уровень Application State размазывает локальную логику на глобал, а опустить на уровень UI State (useState, useReducer, Context) приводит к запутанным и не оптимизированным конструкциям типа prop drilling

Если у вас useContext приводит к prop drilling, значит вы неправильно его используете

Я немного скомкал этот момент, context приводит к неоптимизированным и бойлерплейтным многословным конструкциям а те другие к prop drilling

Ни к чему такому он не приводит, как раз таки наоборот, с помощью context легко можно избавиться от всяких многословных конструкций и prop drilling. У Вас точно есть экспертиза в данном вопросе? :)

Господи что за бред

Никаких строгих правил нет на самом деле, это тот же человеческий фактор

Подход не решает никаких проблем

Но и добавляет новых

Одна и та же кнопка нужна в двух фичах, вы предлагаете их дублировать

Золотое правило: Если компонент не переиспользуется в двух+ фичах, ему не место в общей components. Он должен жить внутри своей фичи.

Получается если компонент будет переиспользоваться в двух+ фичах, то ему место в общей components? Это же тот же хаос создастся:)

Sign up to leave a comment.

Articles