thinking reactive

53
Reactive Thinking fb.me/dangthaison.91 | @dangthaison91

Upload: thai-son-dang

Post on 09-Jan-2017

60 views

Category:

Software


1 download

TRANSCRIPT

Reactive Thinking

fb.me/dangthaison.91 | @dangthaison91

FunctionalReactive

Programming

1. What is FRP?

Functional+

Reactive

Microsoft Excel

a = b + c

FRP: Streams of values over time

Observable

Observable Event• Next

• Error

• Completed

FRPis

Declarative

Imperative

Write correct sequence of codes in the correct order. Step by step. (HOW)

Declarative

Write code to describes WHAT you want to do.

2. Why is FRP?

Example 1

Search API as you type but:

- Don't spam API server every seconds- Only make request if keyword changed- Cancel previous requests

Imperative

Declarative

Declarative

Declarative

Declarative

Imperative

Declarative

Example 2

When the user starts simultaneously panning and rotating an object, start a countdown from 3.

Stop the timer either when the countdown ends or when the user stops the gestures.

Imperative

Imperative

Imperative

- When the user touches the screen - Check if a user is panning an object, store that information - Check if both gestures are running simultaneously - Start a timer, from 3, counting down. - Check if the user is rotating an object, store that information - Check if both gestures are running simultaneously - Start a timer, from 3, counting down. - Check if the user stopped panning - Stop the timer if needed - Check if the user stopped rotating - Stop the timer if needed

- When the timer ticks, decrease the number of seconds left - If the number of seconds left is zero, stop the timer*

There is a Better Way!

Declarative

Declarative

Declarative

Declarative

Declarative

Declarative

Declarative

Declarative

Define condition “simultaneously `panning` and `rotating`”Define condition “start a countdown from `3`”Define condition “when the user stops the gestures”Define what a timer is

When the user starts simultaneously `panning` and `rotating` an object, start a countdown from `3`.Stop the timer either when the countdown ends or when the user stops the gestures.”

Advantages• Code more concise, easy to read, easy to understand

without context

• Make asynchronous easier

• Concurrency, thread safety

• Eliminate state from your code

• Has standard mechanism for error recovery

• Support Data Binding

• Maintainability, Extensibility, Testability...

Denial• FRP is hard, imperative is more easy

• FRP just is trend!

• RxSwift is just another TOOL

• Unnecessarily complex

3. Thinking in Reactive

FRP is hard, but it is SIMPLE

Imperative is EASY

Simplevs

Easy

Complexity

Simple made Easy— Rick Hickey

FRP is good Trend

Functional Reactive is

RADIOACTIVE

More: https://goo.gl/lfNWlJBlog: https://dangthaison91.wordpress.com

Thank you!