왕논의 연구실

패스트캠퍼스 챌린지 22일차 본문

강의/강의 챌린지(iOS 앱 개발 올인원 패키지 Online)

패스트캠퍼스 챌린지 22일차

ywangnon 2021. 11. 22. 23:03

드디어 제가 기대하던 것 중 하나인 MVVM입니다.

제가 이 강의를 듣는 이유 중 하나입니다.

 

swift 프로그래밍 문법이나 앱 만드는 것은 다른 곳에서도 찾을 수 있지만, MVVM을 한국어로 차근차근 듣기가 쉽지가 않습니다.

특히, 제가 원하는 것이 기존에 작성했던 코드를 MVVM으로 리팩토링하는 것을 배우기를 바랬습니다.

그래야 차이를 확실히 느낄 수 있고, 같은 과정으로 제 기존 코드를 수정할 수 있다고 생각했습니다.

 

우선적으로 디자인패턴에 대한 개념을 알아보았습니다.

처음에는 처음에는 마구잡이식으로 코딩을 했습니다. 아무것도 없었으니깐요.

그런데 그러다보니 유지보수비용이 너무 증가하게 됩니다. 이 유지보수비용으로 회사가 힘들어지는 상황도 발생하게 되죠. 그래서 코드의 정리와 패턴을 연구하여 유지보수비용이 적게 하기 위해 노력합니다. 그 결과 얻은 결과가 디자인패턴의 개발입니다.

 

그래서 디자인패턴이란 코드를 잘 짜기위한 전략입니다.

디자인패턴은 2가지 목표를 가지고 있습니다.

1. 기술부채 최소화

2. 재사용 및 지속 가능한 코드를 작성

 

ios에서 일반적인 디자인패턴은 MVC와 MVVM입니다.

 

MVC는 모델, 뷰, 컨트롤러로 이루어져서 컨트롤러가 모델과 뷰 사이에서 데이터를 중계하는 패턴입니다.

ios의 경우 모델은 struct등의 데이터, 뷰는 uiview등 뷰 요소들, 그리고 뷰컨트롤러는 UIViewController를 말합니다.

MVC같은 경우, 초기 애플에서도 이에대해 아카이브로 남길정도로 중요하게 지원하였습니다.

하지만 MVC로 코드를 짜다보면 느껴지게 됩니다.

바로 뷰컨트롤러, 즉, UIViewController가 너무 커지게 됩니다.

저도 코드를 작성하다보면 느끼는 것이 이름부터가 UIViewController입니다. 즉, iOS에서는 뷰와 컨트롤러가 너무 가까이 붙어있습니다. 거의 한 덩어리처럼 느껴질정도로요. 그러다보니 뷰컨트롤러가 여기저기 오지랖을 부리면서 점점 더 커지게 됩니다.

저는 이것때문에 extension으로 파일을 분리해가면서 작성했지만, 코드상으로는 한덩어리나 마찬가지입니다.

게다가 뷰를 코드로 작성했기때문에 덩치는 더 어마어마했었습니다.

 

그런데 지금은 많이 쓰는 것이 MVVM이라고 합니다.

모델, 뷰, 뷰모델로 구성되어 있습니다.

모델은 MVC와 같이 데이터, struct입니다. 그리고 뷰는 뷰요소와 UIViewController까지 포함시킵니다. 그리고 ViewModel을 따로 두어서 데이터를 뷰모델을 통해서 지나가게 만들어줍니다.

이것을 설명해주시는데 기존 코드를 바꾸시기 전에 MVVM을 바꾸기 위해 주석으로 할 일들을 작성하고 하나하나 교체해 나갔습니다.

 

작은 앱을 MVVM패턴으로 교체하는 것이었는데 굉장히 도움이 되었습니다.

 

실습사진 1

위와 같이 전략을 작성하고 하나하나 바꿔보니 굉장히 도움이 되었습니다.

 

 

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.

 

https://bit.ly/3FVdhDa

 

수강료 100% 환급 챌린지 | 패스트캠퍼스

딱 5일간 진행되는 환급챌린지로 수강료 100% 환급받으세요! 더 늦기전에 자기계발 막차 탑승!

fastcampus.co.kr

 

#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기 #iOS앱개발올인원패키지Online.