feature-sliced / documentation

🍰 Architectural design methodology for Frontend projects
https://feature-sliced.design
MIT License
1.4k stars 146 forks source link

Add new example - IT bookstore #659

Closed UmttikhinaDasha closed 3 months ago

UmttikhinaDasha commented 3 months ago

Пример с использованием React, TypeScript, Redux Toolkit для просмотра и поиска книг, связанных с IT сферой.

https://github.com/UmttikhinaDasha/IT-Bookstore

netlify[bot] commented 3 months ago

Deploy request for pr-fsd pending review.

Visit the deploys page to approve it

Name Link
Latest commit de05da9b3cee6aeaeae317da59099c9ad323b988
illright commented 3 months ago

Привет, спасибо за пример! Есть несколько пунктов фидбека:

  1. Немного смущает папка shared/lib/hooks. В целом, FSD рекомендует не группировать вещи по тому, чем они являются (хуки, например), а вместо этого группировать по назначению (например, это для UI, а другое — для API). В случае shared/lib, идеальной для этой папки структурой является плоская коллекция мини-библиотечек, каждая из которых строго определяет свое назначение. В данном случае может быть тяжело выделить useDebounce и usePrevious в отдельные библиотеки, и тем не менее, назначение у них разное. Я бы предложил lib/debounce и lib/state соответственно. category можно, в целом, оставить и так, но это название не очень передает мне, какой код в этот файл можно добавить, а какой — нельзя. Вижу, что эта функция используется только в одном месте, я бы не парился и просто перенес ее туда, к месту использования.

  2. (не блокер) Вайлдкард-экспорты (export * from) немного мешают цели индекс-файлов ограничить публичный API. В будущем может быть сложнее это изменить, поэтому лучше сразу прописывать экспорты вручную. Заодно это будет еще одним аргументом не класть что-то в shared, а оставить по месту использования

  3. (не блокер) Советую выдерживать постоянство в названиях сущностей между единственным и множественным числом. Либо так (authors), либо иначе (book), а то на этой почве могут возникать непродуктивные разногласия между разработчиками в команде

  4. Заметил, что фича toggleTheme используется только в одном месте, советую тоже перенести к месту использования. В целом, чем меньше фич — тем лучше, проще находиться по проекту.

  5. (не блокер) Кажется, в src/widgets/navigationMenu пропущено деление на сегменты. Не большая проблема, но указывает на кое-что другое. Этот виджет тоже используется только в одном месте, думаю, можно безболезненно перенести его в layout сегмент, тогда не придется создавать сегмент :)

  6. Но вот на слое pages деления на сегменты явно не хватает, чтоб в дальнейшем было легче добавлять код туда

Скажи, что думаешь насчет этих пунктов

UmttikhinaDasha commented 3 months ago

Спасибо за фидбек!

  1. Согласна, звучит разумно. Папку hooks убрала, перенесла category к месту использования
  2. Поняла, вайлдкард-экспорты убрала
  3. Тут тоже согласна, сущности переименовала и на будущее учту)
  4. toggleTheme перенесла к месту использования
  5. Да, это хорошая идея. Уже перенесла navigationMenu в layout
  6. Сегменты в слое pages добавила

Изменения залила