Переиспользование идеи vs переиспользование кода: что когда и зачем?

Работая в одном из проектов на react+redux вышло так, что я написал свой grid-компонент (с фильтрацией, настройками, подсветкой искомого, специфическим выводом значений).

По ходу дела встал вопрос о том как внутри устроен redux, в частности его методы combineReducers, createStore (возможность подмешивать middleware), store.dispatch.

По отношению к store.dispatch интересовало:
  • можно ли сделать dispatch нескольких action за один раз, т.е. не оповещая слушателей store об промежуточных изменения состояния?
  • можно ли получать уведомления (подписаться) на момент когда redux завершит оповещение всех слушателей?
  • что будет если listener подписанный на изменение store в себе вызовет store.dispatch и можно ли его отложить на момент завершения оповещения всех слушателей да ещё и собрать все вызовы store.dispatch из слушателей в одно общее обновление?


По итогу изучения исходного кода redux-а получилось:
  • набор специфических методов combineReducers — идея была в том, что-бы весь совокупный reducer описывать в одном месте явно отображая из каких простых reducer-ов он состоит и как (какими методами) они собираются вместе.
  • от реализации интересующего по поводу store.dispatch я отказался т.к. это потребовало бы переписывания redux, дополнительного изучения как бы себя повёл redux-dev-utils в отношении "склеенного" dispatch нескольких action-ов, и главное — усложнение инструмента, которое, возможно, выходит за пределы его изначальной концепции (A Predictable State Container for JS Apps).


Из разсмотрения истории выше передо мной встал вопрос вынесенный в заглавие — переиспользование идеи vs переиспользование кода: что когда и зачем?

Самописный grid-компонент — пример переиспользования идеи "наряженной" в специфические "одежды обстоятельств".

Использование redux и redux-dev-tools — пример переиспользования кода и инструментов.

Набор специфических методов по мотивам combineReducers даёт вариант смешения подходов — переиспользована идея "некоторым образом порождать reducer из составных более простых частей" и переиспользован код combineReducers лежащий в основе специфических методов комбинирования.



Вопрос, в более развёрнутом виде, это постановка задачи о:
  • выявлении набора факторов влияющих на выбор одного из вариантов переиспользования.
  • выявления критериев выбора (на основе оценки факторов из набора).
  • прогнозе последствий выбора одного из вариантов либо их сочетания (отчасти, как одного из факторов влияющих на выбор и, отчасти, как разсмотрение возможностей).


В таком виде вопрос частично философский, т.к. подразумевает что у него есть 2 части ответа:
  • собственно философская — не зависимая от конкретных областей применения (таких как вид приложения, язык, библиотеки) и общая для них всех.
  • и прикладная — на моём примере это Single-page application, js, react, redux в конкретике требований проекта
  • Вопрос задан
  • 247 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы