Skip to content

RxSwift

Song edited this page Sep 17, 2021 · 22 revisions

RxSwift를 왜 사용하셨나요?

서우석

간단하게 말하자면 코드의 가독성과 응집성적인 측면에서 큰 장점이 있기 때문입니다. 응집성도 결국 코드의 가독성과 꽤 연관이 있다고 본다면 결국은 가독성이겠네요. 사실 RxSwift없이 기존의 코코아터치 방식으로 구현한다고해서 구현이 불가능한 점은 없다고 생각합니다. 다만, 비동기 코드가 늘어날 수록 코드의 응집성이 떨어지고 코드를 이해하기 위해서 여러 line을 왔다갔다하면서 읽어야하는 점이 불편했습니다. RxSwift는 코드의 응집성을 높이고 코드의 절대적인 양을 줄여서 비교적 쉽게 코드의 흐름을 마치 동기적인 코드인 것처럼 따라갈 수 있다는 장점이 있어서 사용하게 됐습니다.

팀 프로젝트를 여러 차례 경험하면서 느낀점은 코드의 가독성은 메모리관리, 의존성관리만큼 중요하다는 사실입니다. 좋은 코드를 작성하는 것은 좋은 글쓰기와 근본적으로 크게 다르지 않다고 생각합니다. 좋은 글쓰기란 독자가 쉽게 읽고 이해할 수 있는 것을 의미합니다. 코드를 작성하는 것도 좋은 글쓰기와 같이 적어도 내가 작성한 코드를 나와 같이 작업하는 팀원들이 쉽게 읽고 이해하는 데 어려움이 없어야 한다고 생각합니다. 그 동안의 팀 프로젝트와 이번 프로젝트를 통해 코드리뷰와 리팩터링을 하면서 느낀점은 가독성이 떨어지는 코드는 객체간 의존성이 높은 코드만큼 수정하기 어렵다는 사실입니다.

물론 러닝커브가 높다는 점과 클로저가 많아지면서 메모리관리에 신경써야한다는 단점도 언급되지만, 러닝커브가 높다는 사실이 단점은 아니라고 생각됩니다. 앞으로도 좋은 기술들은 더 빠르게 생겨날 것이고 앞으로 생겨날 기술들의 러닝커브가 모두 낮다는 보장은 없습니다. 개발자라면 러닝커브가 높다는 이유로 좋은 기술을 학습하는 것에 망설임을 가지면 안된다고 생각합니다. 언제까지 피할 수는 없을테니까요. 메모리관리 역시 마찬가지라고 생각합니다. 물론 개발자도 사람이기때문에 사람이 할 수 있는 실수를 줄이기 위해 기술 자체가 문제를 방지해준다면 좋겠지만, 그럴 수 없다면 개발자가 충분히 신경쓰면 된다고 생각합니다. 혼자서는 어렵다면 팀원들의 도움을 받으면 됩니다. github과 같은 협업툴을 사용해서 브랜치를 따로 관리하고 코드 리뷰 후에 merge하는 과정도 혼자서는 볼 수 없는 문제를 찾을 수 있는 좋은 방법이니까요.

Clone this wiki locally