Skip to content

계층분리

박진성 edited this page Dec 14, 2023 · 1 revision

중간에 리팩토링 한 이유

  • 처음부터 domain layer 를 사용해야할 필요성을 느끼지 못하였습니다. data layer 으로만 분리해도, 충분히 코드가 간결하였고, 반복 호출되는 기능 또한 없었습니다

  • 프로젝트의 기능이 많아짐에 따라서, 동일한 API 호출이 서로 다른 ViewModel에서 반복되어 호출되는 케이스가 많아졌습니다. 따라서 이때부터 domain layer 분리에 대한 고민을 하게 되었습니다

  • 실제로 분리하는 과정을 거친후, 비즈니스 로직들을 UseCase 로 캡슐화 시키다 보니, ViewModel 에서 호출하는 로직이 명시적이게 되었습니다. 또한 data layer 와의 의존성을 느슨하게 하여, 더욱 ViewModel 에서 네트워크 통신을 알지 못하고, domain layer 를 통해 기능에만 집중할 수 있도록 하는 효과도 있었습니다

Clean Architecture 사용 이유

우선 흔히 말하는 “유지보수가 쉽다” 가 가지는 의미에 대해 생각해 보았습니다.

  • 다른 사람이 보기에 이해하기 쉬워야 한다
  • 변경하기 쉬워야 한다.

여기서 변경하기 쉬운 코드를 작성하려면, 의존성을 낮추는 계층분리를 하여, 각 계층의 수정사항이 다른 계층까지 전파되지 않게 해야하고, 반복되는 코드 및 기능을 캡슐화 하여, 재사용 하여야 합니다.

따라서 Clean Architecture 를 도입하여 domain / data / presentation 총 3개의 layer로 운용함으로써, 데이터통신과 비즈니스 로직, 그리고 Ui 로직 각각의 수정사항을 각 계층에서만 진행될 수 있도록 노력하였습니다.

Clone this wiki locally