clamp
Clamp
clamp
글쓰기 관리
전체 방문자
오늘
어제
  • 분류 전체보기 (509)
    • IOS (85)
    • SwiftUI+TCA+Combine (9)
    • RxSwift + MVVM (56)
    • Clean Architecture (12)
    • SWIFT (56)
    • iOS - TDD (2)
    • 디자인패턴 (4)
    • CS (56)
      • 알고리즘 (29)
      • 운영체제 (15)
      • 자료구조 (2)
      • 네트워킹 (4)
      • 기타 (6)
    • 회고 (0)
    • Firebase (18)
    • SwiftUI (10)
    • iOS - UIKit (11)
    • iOS - 오픈소스 (6)
    • 코딩테스트 (166)
      • 프로그래머스 (164)
    • 정보처리기사 (14)
    • GitHub (2)
글쓰기 / 관리자

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Q
  • Swift
  • ㅅ
  • uikit

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
clamp

Clamp

RxSwift + MVVM

RxSwift(2). ReactiveProgramming, 반응형 프로그래밍

2023. 2. 16. 14:40

명령형 코드와 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, 다양한 연산자에 대해 공부한다.

 

저작자표시 비영리 동일조건 (새창열림)
    'RxSwift + MVVM' 카테고리의 다른 글
    • RxSwift(5). infallible
    • RxSwift(4). Observer
    • RxSwift(3). Observables과 Observable의 생성(create, from)
    • RxSwift(1). RxSwift 장점, 설치
    clamp
    clamp
    주니어 iOS개발자의 발악!!!!!!!

    티스토리툴바