ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Clean Swift
    Swift/아키텍쳐 2021. 3. 14. 16:54

    Clean Swift?

    https://clean-swift.com/ 

    처음 보이는 페이지에서 Clean Swift에 대한 설명은 Clean Architecture + TDD Code less. Test More. 이라고 되어있습니다.

    장점

    이 템플릿의 아래와 같은 점을 해결할 수 있다고 소개하고 있습니다.

    - ViewController가 점점 거대해지고, 이해하기 어려워지고, 오류를 고치기 어렵다.

    - 비즈니스 로직을 model로 옮겼다. model이 너무 커졌다.

    - 앱이 하나의 거대한 스토리보드로 되어있다.

    - 버그 재현하는데 4시간을, 고치는데 일주일 걸리는 문제

    - 코드의 새로운것을 추가하려면 다시 또또또 리팩토링하는 문제

    - TDD 노력과 이익을 따졌을때 그만한 가치가 없을때

     

    실제로, MVC 패턴으로 작업하면서 비즈니스 로직이 방대할때 SwiftLint가 class가 길다며 나누라고 지시했고, 하나의 ViewController 파일에서 모든 비즈니스 로직을 처리하기에는 무리가 있었습니다.

     

    그렇다면 왜? 정말로 위와같은 문제를 해결할 수 있을까?

    - POP 지향이기 때문에 Swift 언어와 호환이 좋다.

    테스트할때 의존성 주입이 쉬울뿐만아니라 테스트 기반 개발이 가능하다.

    테스트가 먼저 고민이 되면서, 비즈니스 업무를 들어가는것과 달리 예외 케이스들을 먼저 생각하게 되고 장애를 예방할 수 있는 좋은 방법이 된다.

    - 컴포넌트들이 명확하게 구분되어 있기 때문에 유지보수가 용이하다.

    역할이 잘 정리되어있어서 어느 부분에서 수정해야겠다는 예상이 되고, 소스 분석도 쉬워진다.

    모두가 이해하게 된다는것은 엄청난 장점이다.

     

    하지만 단점도 명확히 알아야한다.

    뷰가 업데이트 될 필요가 없는데 많은 코드를 작성한다? : 오히려 더 보기 어려움

    Cell에 비즈니스 역할이 있다고 하더라도, vip를 넣는거보다 delegate를 써서 처리하는게 낫지 않을까?

     

    구조

    해당 이슈를 해결하기 위해 구조를 바꿔서 작업해보기로 했습니다.

     

    Clean Swift 의 가장 중요한 구조

    Clean Swift를 흔히 VIP 구조라고 합니다. 

    clean swift에서는 단계를 아래처럼 설명하고 있습니다.

    1. viewDIdLoad 나, IBAction 에서 use case를 트리거해라

    2. viewController는 Interactor를 호출해 비즈니스 로직을 수행한다.

    3. interactor는 presenter를 호출해 결과를 전달하고, presenter는 화면을 위한 데이터를 만든다.

    4. presenter는 viewController를 호출해 결과를 화면에 보여줍니다.

     

    이 외에도,

    worker : Interactor에서 더욱 복잡한 비즈니스 로직은 worker로 이동한다. (공통을 이동하는것 같기도 함)

    Router : 화면 이동에 대한 로직

    Models: 기본적으로 requset, response, viewmodel로 작성됨 

     

    (여담으로 VIPER 구조와 다른 모습을 위의 그림을 이해하면 알 수 있다, VIPER는 presenter를 가운데 두고 위 처럼 원형 구조가 아닌, 서로 주고 받는 직선 구조다)

     

     

    이해하는데 도움받은 네이버 강의가 있어 아래 해당 강의 및 링크를 공유합니다. 정말 감사해요...!

     

    프로젝트 성격에 따른 여러 구조를 배워 볼 수 있는 강의 : https://www.youtube.com/watch?v=GXAGCTsnShI&t=815s

     

    Clean Swift의 모든것 : https://www.youtube.com/watch?v=3jRxPM3xBnY

     

     

    728x90

    'Swift > 아키텍쳐' 카테고리의 다른 글

    Ribs 예제 도입기 - Ribs 설치 편  (0) 2021.10.15
    Ribs 에 대해서...  (0) 2021.09.30
    Clean Architecture  (0) 2021.06.18
    ReactorKit  (0) 2021.06.18
    ios 개발 아키텍쳐 MVC, MVVM  (0) 2019.11.20

    댓글

Designed by Tistory.