Aaron
1k
2018-10-31 19:14:29 작성 2018-10-31 20:01:32 수정됨
0
741

Kotlin Coroutin vs Rx


요즘 Coroutine을 보고 있습니다만... 너무 어렵네요...

스레드 관련 기본 지식이 부족해서 그런가 싶기도 하고요...

영어로 된 문서가 대부분이라 더 그런 것 같기도 하고요...


팀내 어떤 분이 Coroutine이 있으니 굳이 Rx를 선택할 이유는 없다는? 뉘앙스로 얘기하시길래  생각에 좀 빠졌습니다.


일단 코루틴과 Rx 모두 비동기 프로그래밍을 좀더 가독성 있고, 효율적으로 작성하기 위한 공통된 목적을 갖고 개발된 것으로 이해하고 있습니다.


Rx의 경우는 함수형 프로그래밍?을 베이스로 하고 있고, 그 특징들 중 하나로 코드 작성 방식이 선언적이더군요.

일반적으로 loop 돌리면서 해주던 작업들을 SQL 선언하듯 filter, map 등 연산자를 써가면서요.

이런 점은 가독성을 높여주기도 하지만 반대로 초기 Rx를 배우기 더 어렵게 만드는 요인이기도 싶습니다.

기존 절차지향적으로 의식의 흐름대로 작성하던 코드를 

뭔가 선언적으로 작성한다는 것이 생각보다 쉽지는 않더라고요.


반면 코틀린은 기존의 절차지향적인 관점으로 코드를 작성할 수 있게 해주기에

Rx와 비교해서 비동기 프로그래밍 작성에 더 나은 접근법이라는 것이 이해가 갑니다.


그런데 제 개인적인 생각으로는 이러한 Rx의 함수형 프로그래밍 특성이

Rx를 Coroutine으로 완전 대체할 수 없게 만드는 Rx만의 장점?이 되지 않을까 싶은데요.


기존 의식 흐름대로, 절차지향적으로 작성하면 장황하게 작성해야 할 코드가

Rx의 풍부한 연산자들을 바탕으로 한 선언적 코드 방식으로 작성하게 되면

간단하게 몇줄로 끝낼 수 있는 경우들이 있습니다.

이런 점들은 코루틴을 쓴다고 개선될 것 같지는 않은데... (혹시 코루틴에서도 가능할까요?)


결론은 Rx와 코루틴을 둘 다 알면, 비동기 연산에는 코루틴을 써서 가독성을 높이고

일부 Rx의 풍부한 라이브러리를 베이스로하는 선언적 코딩 방식으로 로직을 간략하게 쓸 수 있는 부분이 있다면 Rx를 쓰는 방식을 같이 섞어 쓰는 건 어떨까 싶습니다.

즉 Rx는 코루틴이 있으니 완전 대체 가능한 기술이라고 하기에 적절하지 않다는 거죠.

고수님들은 어떻게 생각하시는지 궁금합니다.


사실 저는 코틀린, 코루틴, Rx 모두 입문자입니다.

해박한 지식이 없고, 얕은 지식으로 두서 없이 적는거라... 

잘못된 내용, 제가 잘못 알고 있는 부분들 알려주시면 감사하겠습니다 

0
  • 답변 0

  • 로그인을 하시면 답변 을 등록할 수 있습니다.