Clean Swfit

JIN·2023년 1월 25일
0

클린 아키텍처

  • 패러다임: 안쪽 원은 바깥쪽을 의존하면 안된다.

  • 바깥쪽 원은 안쪽 원을 알아야하고, 안쪽 원은 바깥쪽 원을 알 필요가 없다.

  • Interactor가 Presenter를 의존하게 되는 문제를 해결하기 위해 의존성 역전의 원칙을 쓴다.

  • 방법은, Interactor가 자기가 호출할 메서드들을 인터페이스로 따로 선언을 하고 이 인터페이스를 Presenter Presenter가 구현하게 된다.

  • 프로토콜들은 프로토콜로 레퍼런싱하고 있어서 프로토콜을 구현하고 있기만 하면 다른 것으로 교체가 가능하다.

  • 라우터는 뷰 컨트롤러가 소유하고 있다. 새 화면으로 전환하기 위해서는 두가지가 필요하다. 새 화면을 띄워주는 것과, 데이터를 주입시켜주는 것. 이것이 라우터의 역할이다.

  • Interactor, Presenter는 거의 재사용성이 없다. 이유는 VIP 사이클을 타기 때문, 그렇기 때문에 공통 로직은 Worker로 따로 빼두는 것이 좋다.

  • DB를 다루는 부분, 즉 중요한 비즈니스 로직을 수행하지 않는 디테일 부분은 다른 클래스로 빼는 것이 좋다. 매니저가 Store에 의존하기 때문에 따로 만들어서 필요한 것만 쓰게 만드는 것이 좋다.

  • 다른 클래스가 프로토콜을 구현하고 있다.

  • 생성시에 구체적인 클리스를 주입받도록 한다.

  • 하드코딩된 데이터 (Memory Store) 는 Contact Manager를 만들어서 써볼때 편하다. 유닛테스트를 작성할때 편하다.

  • ViewController에서는 출력만 하도록 하는 것이 좋다. (displayedNotes 만들어서 보내줌)

  • weak : VIP 간의 Retain Cycle을 방지 하기 위해 weak 사용

retain cycle에 대해 공부하기

https://fomaios.tistory.com/entry/iOS-%EB%A9%B4%EC%A0%91%EC%A7%88%EB%AC%B8-Retain-Cycle%EC%9D%B4%EB%9E%80

독립적으로 테스트가 가능하다.
장점

  • 단방향 흐름이라 코드 파악이 쉬움
  • 테스트 코드 작성이 쉬움
  • 관심의 분리를 강제로 시킴

단점

  • 진입 난이도
  • 작은 기능에도 많은 코드 필요
profile
배우고 적용하고 개선하기

0개의 댓글