본문 바로가기

기타/패스트캠퍼스 Ribs

패캠 Ribs 정리 12. 리펙토링

 지금 앱은 모노리틱 구조이므로 사실상 모든 객체에 접근이 가능하다. 모듈 구조로 바꿔보자

 

topup 리블렛이나 addPaymentMethod는 재사용하기위해서 만들었지만 CardOnFile, EnterAmount 리블렛 처럼 한군대서만 쓰이는 객체도 다른 개발자들이 무분별하게 접근이 가능하다. 이를 방치하면 점점 스파게티코드가 된다.

그리고 서로 강결합이 발생해서 원하는 코드만 빌드하고 돌려보는것이 불가능하다.

 

모듈화와 느슨한결합을 이용해 이를 해결할것이다.

먼저 모듈화 작업을 한다. 코드를 라이브러리로 분리하고 public과 internal로 무분별한 접근을 구분해서 차단한다.

그 후 모듈을 느슨하게 결합시켜 소스코드 의존성을 역전시키고 컴파일하고싶지 않은 코드를 분리하고 내가 빌드해보고 싶은 코드만 돌려볼 수 있게 된다.

 

모듈을 나누는 방식은 팀의 규모나 방식에 따라 달라지겠지만 몇개의 팀이 있다고 가정하고 각 팀별로 패키지를 만들고 그 패키지안에 담당 모듈들을 가지도록 만들 예정이다

 

패키지를 5개 생성한다.

508d7116df380c2d38b41bd74a87b8c7ca2269f6

 

모듈화되어있지 않은 앱을 모듈화 할때는 작업순서가 중요하다.

앱 최상위 시작점 즉 AppDelegate에서 가장 먼 곳에서 부터 시작해야 한다. 코드를 모듈화하려면 그 코드가 쓰고있는 코드들이 이미 모듈화 되어있어야 하기 때문이다.

 

우리 프로젝트에서 leaf에 해당하는부분은 FinanceHome>AddPaymentMethod 리블렛이다. addPaymentBuilder를 쓰는곳이 Topup, FinanceHome, ... 쓰는곳은 많다. 그리고 build() 메서드를 보면 다른 리블렛을 참조하는곳이 없다. 여기서부터 시작해서 하나씩 올라가면 될 것 같다.