본문 바로가기
iOS/RxSwift

[RxSwift] ReactiveX, RxSwift 왜 써야할까?

by 최지철 2023. 8. 30.
728x90
반응형

'

Swift란?

Swift 는 객체지향 프로그래밍 패러다임(OOP)과 함수형 프로그래밍 패러다임(FP)을 가지고 있는 프로토콜 지향 언어이다.

기존 Apple에서 개발하기 위해 지원하는 프래임워크는 객체지향 프로그래밍 패러다임으로 설계 되어있다.

맥을 개발하기 위해 지원하는 프래임워크는 코코아라 부르고 모바일용을 개발하기 위한 프래임워크는 코코아 터치라고 불린다.

하지만.

Swift는 OOP와 FP 중에 함수형 프로그래밍 패러다임을 강조한다.

 

여기서 그러나,(ㅎㅎ)

 

Swift 가 함수형 프로그래밍 언어는 아니다.

 

Apple은 2015년 9월 WWDC에서 Swift는 프로토콜 지향 언어(Protocol Oriented Programming Language, POP)라고 발표 했다. 이때가 Swift 2.0 

중요한 키워드는 Protocol(프로토콜) Extention(익스텐션) 이다.

Protocol 프로토콜은 구현해야 하는 동작을 지정하는데 사용되는 추상적 표현을 정의하고 기능 구현을 하자! 이다. Java의 Interface

그리고 Extention 익스텐션은 프로토콜이 원하는 기능을 강제로 구현해 놓은 것이다.

POP 는 기존 클래스의 추상적인 상속의 한계를 벗어나 의존성(dependency)없이 유연하게 사용이 가능하고, 기능을 더욱 명확히 하게 해준다.

Swift 는 객체지향 프로그래밍 패러다임과 함수형 프로그래밍 패러다임을 가지고 있는 프로토콜 지향 언어 이다다.

 


RxSwift란?

https://reactivex.io/?source=post_page-----b21f75e34c10-------------------------------- 

 

ReactiveX

CROSS-PLATFORM Available for idiomatic Java, Scala, C#, C++, Clojure, JavaScript, Python, Groovy, JRuby, and others

reactivex.io

RX ReactiveX 이고, ReactiveX Reactive eXtensions 의 줄임말이다.

ReactiveX는 관찰 가능한 연속성(순차적)형태와 함수형태의 연산자를 이용해서 비동기&이벤트를 위한 코드로 구성하고 있는 라이브러리(또한 스케줄러를 통해 parameterized된 실행들을 가능하도록 함)

 

또한,Swift는 함수형 프로그래밍(FP) 패러다임을 강조하고 있고, Rx라는 시대의 흐름과 합쳐진 RxSwift는 함수형 프로그래밍(FP)에 반응형 프로그래밍(Reactive Programming)이 더해진, FRP(Functional Reactive Programming) 로 프로그래밍을 하게 해준다.

 

 


 

 

RxSwift 그래서 왜 사용할까?

1. 반응형 프로그래밍 패러다임 제공이 명확함

- Responsive : 언제나 UI를 최신 상태로 유지

- Resilient(탄력이 있는) : 각 behavior들은 독립적이고 에러가 발생할 때 회복에 유연한 탄력적 특성

- Elastic(유연한) : 다양한 workload를 처리(데이터 모음, 자원 공유 등)

- Message driven : components들은 메세지 기반으로 상호작용 하므로 재사용성의 장점과 lifecycle과 클래스의 구현을 분리

 

2. RxSwift없이 비동기적인 측면에 접근한다면,코드를 이해하기가 힘듦

- 애플의 API에서 제공하는 delegate패턴을 그대로 사용할 뿐 이지, 그 코드 자체는 속에 내장되어 있음

- 비동기 실행에 관한 명확한 추론을 하기가 힘듦

 

3. 콜백지옥에서 벗어 날 수 있음

- iOS SDK에서 Closure, Notification, Delegate 등을 이용하면 비동기 처리가 가능하다. 하지만, 데이터 변화가 생기면 UI 업데이트를     명시적으로 호출해야 하거나 콜백 지옥이 생기는 등의 문제 요소들이 있다.

- 스레드를 쉽게 넘나들며 콜백 지옥을 탈출할 수 있다. 

4. 선언적 코드

- 절차지향 프로그램과 함수형 프로그램의 균형성을 갖춘 형태가 RxSwift

   Declarative code는 이벤트가 일어날 때 그 데이터에 대한 처리가 가능하며, for loop와 같은 작업 역시도 가능

- 절차지향 프로그램은 마음대로 상태를 변경하며, 함수형 프로그램은 side effect를 최소화 하는 코드를 지향한다

 

5. 트렌드

- 클라이언트 단의 개발자들은 시시각각 변화하는 이슈 혹은 학습거리가 많다. 현재 UIKit에서의 최신 트렌드는 RxSwift 와    MVVM이다.

  채용공고에서 보면, 쉽게 볼 수 있다. 내가 Rx를 공부하기 시작한 이유도 여기있다. 러닝커브가 있다는 단점이 있지만,   

  iOS개발자로 취업, 이직을 하기 위해서는 Rx는 현재 필수불가결 한 것 같다.

728x90
반응형

'iOS > RxSwift' 카테고리의 다른 글

[RxSwift] Create Operators [1]  (0) 2023.10.29
[RxSwift] Relay  (1) 2023.10.29
[RxSwift] Subject  (0) 2023.10.29
[RxSwift] Disposable  (0) 2023.09.14
[RxSwift] Observable  (0) 2023.09.14