Информация об изменениях

Сообщение Re[5]: Как в C++ получить Redux и Redux Dev Tools от 03.01.2021 5:07

Изменено 03.01.2021 5:15 Артём

Re[5]: Как в C++ получить Redux и Redux Dev Tools
Здравствуйте, StandAlone, Вы писали:

Тё>>5) Прицепленный на Redux RxJS: визуальные контролы подписываются на интересующие их переменные и автоматически перерисовываются.


SA>Оу йес! Если приложение на редакс представляет собой просто кучу не особо вонючего говна, то RxJs это верная специя для того, чтобы превратить кучу в кал мощный, едкий!

SA>Это отличный способ повысить нечитаемость кода на два порядка относительно размещения бизнес-логики в Button1Click, как в случае простого редакса!
SA>

SA>//pa ss this through constructor, DI or use singleton (but please don't)
SA>private final RetryManager retryManager;

SA>public void load() {
SA> Observable.combineLatest(
SA> repository.getSomething()
SA> .retryWhen(retryHandler ->
SA> retryHandler.flatMap(
SA> err -> retryManager.observeRetries())),
SA> localStorage.fetchSomethingReallyHuge()
SA> .retryWhen(retryHandler ->
SA> retryHandler.flatMap(
SA> nothing -> retryManager.observeRetries())),
SA> (something, hugeObject) -> new Stuff(something, hugeObject))
SA> .subscribe(stuff -> {}, err -> {});
SA>}

SA>Что тут сказать? Это замечательный способ довести busFactor до единицы и замкнуть весь код на себе! И на месте нормального код ревьювера я бы за такое джоб сейфети расстреливал на месте for the Greater Justice! Но на твое счастье, Артемка, меня в ревьюверы не пускают. Поэтому мы продолжаем катиться туда, куда катимся, господа. Поаплодируем Артемкам! Mein Herz Brennt!


То, что вы привели, конечно, ужасное г-но. Спора нет.

Вот кусочек реализованной мной логики с вызовом NgRx (Redux скрещен с RxJS).

  private initialiseEffects(): Observable<any> {
    return merge(
      // Update current section - on section click
      this.actions$.pipe(
        ofType(fromUserInputActions.sectionClickAction),
        switchMap(this.onSectionClick$.bind(this)),
      ),
      // Update current section - on crumb click
      this.actions$.pipe(
        ofType(fromUserInputActions.sectionCrumbClickAction),
        switchMap(this.onCrumbClick$.bind(this)),
      ),
      // Update current children
      this.store.pipe(
        select(getCurrentSection),
        switchMap((current) => this.getChildren$(current, SectionService.filterSectionsForList)),
        map((children) => fromSectionStateActions.storeSectionChildrenAction(children)),
      ),
      // Update current crumbs
      this.store.pipe(
        select(getCurrentSection),
        switchMap((current) => this.getCrumbs$(current)),
        map((crumbs) => fromSectionStateActions.storeSectionCrumbsAction(crumbs)),
      ),
    ).pipe(
      enterZone(this.ngZone),
      catchError((error) => of(sectionErrorAction(error))),
    );
  }
Re[5]: Как в C++ получить Redux и Redux Dev Tools
Здравствуйте, StandAlone, Вы писали:

Тё>>5) Прицепленный на Redux RxJS: визуальные контролы подписываются на интересующие их переменные и автоматически перерисовываются.


SA>Оу йес! Если приложение на редакс представляет собой просто кучу не особо вонючего говна, то RxJs это верная специя для того, чтобы превратить кучу в кал мощный, едкий!

SA>Это отличный способ повысить нечитаемость кода на два порядка относительно размещения бизнес-логики в Button1Click, как в случае простого редакса!
SA>

SA>//pa ss this through constructor, DI or use singleton (but please don't)
SA>private final RetryManager retryManager;

SA>public void load() {
SA> Observable.combineLatest(
SA> repository.getSomething()
SA> .retryWhen(retryHandler ->
SA> retryHandler.flatMap(
SA> err -> retryManager.observeRetries())),
SA> localStorage.fetchSomethingReallyHuge()
SA> .retryWhen(retryHandler ->
SA> retryHandler.flatMap(
SA> nothing -> retryManager.observeRetries())),
SA> (something, hugeObject) -> new Stuff(something, hugeObject))
SA> .subscribe(stuff -> {}, err -> {});
SA>}

SA>Что тут сказать? Это замечательный способ довести busFactor до единицы и замкнуть весь код на себе! И на месте нормального код ревьювера я бы за такое джоб сейфети расстреливал на месте for the Greater Justice! Но на твое счастье, Артемка, меня в ревьюверы не пускают. Поэтому мы продолжаем катиться туда, куда катимся, господа. Поаплодируем Артемкам! Mein Herz Brennt!


То, что вы привели, конечно, ужасное г-но. Спора нет.

Вот кусочек реализованной мной логики с вызовом NgRx (Redux скрещен с RxJS).

  private initialiseEffects(): Observable<any> {
    return merge(
      // Update current section - on section click
      this.actions$.pipe(
        ofType(fromUserInputActions.sectionClickAction),
        switchMap(this.onSectionClick$.bind(this)),
      ),
      // Update current section - on crumb click
      this.actions$.pipe(
        ofType(fromUserInputActions.sectionCrumbClickAction),
        switchMap(this.onCrumbClick$.bind(this)),
      ),
      // Update current children
      this.store.pipe(
        select(getCurrentSection),
        switchMap((current) => this.getChildren$(current, SectionService.filterSectionsForList)),
        map((children) => fromSectionStateActions.storeSectionChildrenAction(children)),
      ),
      // Update current crumbs
      this.store.pipe(
        select(getCurrentSection),
        switchMap((current) => this.getCrumbs$(current)),
        map((crumbs) => fromSectionStateActions.storeSectionCrumbsAction(crumbs)),
      ),
    ).pipe(
      enterZone(this.ngZone),
      catchError((error) => of(sectionErrorAction(error))),
    );
  }


В первой строчке ваш соотечественник добавил говнеца
В оригинале ещё месяц назад было так:
  private initialiseEffects(): Observable<
    fromSectionStateActions.SectionStateAction | fromSearchWiseActions.SearchStartUIAction
    > {

Блин какой же песец.