명령형 코드와 RxSwift로 작성한 반응형 코드를 작성해본다
RxSwift를 사용하지 않고 코드를 구현했다면 명령형 프로그래밍 패러다임으로 작성했을 것이다.
아주 단순한 코드를 작성해본다
var a = 4 1
var b = 5 2
a + b 9
a = 12 17
a에 저장된 값을 변경해도 a + b의 값은 변하지 않는다. a + b연산이 실행 될 때는 이 시점에 a와 b에 저장된
값을 사용해서 결과를 도출한다.
만약 a나 b에 저장된 값이 바뀔 때 마다 계산을 다시 실행하도록 구현하고싶다면?
명령형 코드에서 구현하는 것이 불가능하지 않지만 상대적으로 복잡한 코드를 작성해야한다.
반면 RxSwift로 작성한다면?
값이나 상태의 변화에 따라 새로운 결과를 도출해 내는 코드를 비교적 쉽게 구현할 수 있다.
이런 프로그래밍을 바로
ReactiveProgramming, 반응형 프로그래밍
이라고 한다.
RxSwift로 작성된 코드
let disposeBag = DisposeBag()
let a = BehaviorSubject(value: 1)
let b = BehaviorSubject(value: 2)
Observable.combineLatest(a, b) { $0 + $1 }
.subscribe(onNext: { print($0) })
.disposed(by: disposeBag)
a.onNext(10)
// 3
// 12
명령형 프로그래밍에비해 복잡해 보이지만 RxSwift를 공부하고 이 코드를 이해할 수 있게 되면 정말 단순하고 직관적인 코드라는것을 알게된다.
명령형 코드에서는 a의 값이 바뀌어도 변경된 값이 출력되지 않았지만 반응형 코드에서는 바뀐 결과가 출력된다.
명령형 코드에서 구현하기 어려운 코드를 짧은 코드만으로 쉽게 구현할 수 있다.
앞으로 이 코드를 이해하기 위해 Observable과 Observer, 다양한 연산자에 대해 공부한다.