Upgrade to Pro — share decks privately, control downloads, hide ads and more …

A new state of mind: Building better web apps w...

A new state of mind: Building better web apps with finite-state machines

Avatar for Adam Michael Daw

Adam Michael Daw

May 27, 2020
Tweet

Other Decks in Programming

Transcript

  1. WHAT IS A FINITE-STATE MACHINE? ANY (ABSTRACT) MACHINE THAT CAN

    BE IN EXACTLY ONE OF A FINITE NUMBER OF STATES AT A GIVEN TIME.
  2. THINGS TO KNOW • NOT NEW (THOUGH RECENTLY GAINING POPULARITY)

    • NOT CODE (THOUGH MANY IMPLEMENTATIONS HAVE BEEN INTRODUCED) • NOT HARD (THOUGH STARTING TO THINK OF THINGS IN THIS FASHION MIGHT BE)
  3. EXAMPLES IN THE WILD A CHECKBOX (2 STATES: CHECKED, UNCHECKED)

    A DOOR (2 STATES: OPEN, CLOSED) A PROMISE (3 STATES: PENDING, REJECTED, FULFILLED)
  4. WHY STATE MACHINES? • IMPLICIT STATE • Booleans such as

    (loading/doneloading) • EXPLICIT STATE • states: { loading: {…}, error: {…}, idle: {…}, success: {…}} • CLEANER CONCEPTUALIZATION OF BEHAVIOUR • BETTER MAPPING OF TRANSITIONS • PARADIGM SHIFT: EVENT-ACTION TO EVENT-STATE-ACTION
  5. VISUALIZING STATE • 2 STATES : • Locked (initial) •

    Coin: un-locked • Un-locked • Push: locked
  6. VISUALIZING STATE PT 2 • 3 STATES : • Idle

    (initial) • Click : fetching • Fetching • Failure: error • Success: idle • Error • Retry: fetching
  7. SUMMARY • CLEANER TRANSITIONS BETWEEN STATES • BETTER UNDERSTANDING OF

    BEHAVIOUR • LESS CODE TO COVER FOR TESTING • Can automate integration testing • MOVE FROM EVENT-ACTION TO EVENT-STATE-ACTION TODAY!