TIL 31

오늘 한 일 / 배운점

  • 9/14 9:30 팀 데일리 스크럼
  • iOS 앱개발 심화 개인 과제(~9/22 14:00)
  • 9/14 19:00 실시간 세션 : MVC 패턴의 기초와 구조 (HG튜터님)

과제

  • iOS 앱개발 심화 개인 과제(~9/22 14:00)

느낀점

오전에 팀 데일리 스크럼 시간에 공유 받은 지식들

  1. 코드 작성할 때 순서는

    1. outlet
    2. 변수 선언
    3. override
    4. function
    5. action 순으로 짜는 게 보편적이다
  2. ctrl + command + shift + a를 누르면

    이전 커밋 기록 변경사항을 확인 가능하다!!
    1

  3. ctrl+shift+또는 을 누르면

    여러 줄 선택 가능하다!!
    2

  4. command+shift+ o 를 누르면

    프로젝트 내 파일 / 클래스 / 함수 검색이 가능하다!
    3


그리고 저녁에 실시간 세션
오늘 주제는 MVC였지만 MVVM 관련해서도 질문받아주시고
다른 좋은 얘기도 많이 해주셨다
그중에서 기억이 남는 몇 가지 적자면

탑다운(Top-down)과 바텀업(Bottom-up)

상위의 개념을 Controller라고 하면 Controller부터 만들어서
크게 크게 가고 싶은 사람이 있는데 이런 방식을 탑다운 이라고 하고
반대로 아래서부터 위로, 모델부터 만들어가는 건 바텀업 이라고 한다

탑다운의 경우 먼저 뷰 컨트롤러부터 만들고 이제 써야 할 데이터를 생각을 할 것이다
그때 모델을 만들고 그걸 또 뷰 컨트롤러에 와서 넣어주고 이런 식으로 계속 왔다 갔다 하게 되는데

반대의 바닥부터 쌓아가는 바텀업의 경우
모델부터 만든다고 하면 앱을 만들기 전에 정책이나 이런 걸 다 기술하고, 그다음에 디자인도 나와있을 테니
어떤 레이블이 표시돼야 하는지 어떤 텍스트가 표시돼야 하는지 만약에 투두 앱을 만든다고 하면
그 To-do라는 정보 안에 뭐가 있어야 하는지 앱을 다 구현해 보지 않아도 미리 정의할 수가 있다.
그래서 미리 어느 정도 그걸 정리해놓고 하는데 물론 완벽히 처음부터 완벽히 다 짤 수는 없으니
상세한 부분은 앱을 구현하면서 없으면 새로 만들고 식으로 모델을 업데이트 해나간다
이렇게 먼저 모델을 만들어놓고 나서 뷰 컨트롤러랑 뷰를 같이 만들면 뷰 컨트롤러를 만들 때
To-do가 이미 있으니까 데이터를 바로 갖다 쓸 수 있다
근데 만약 탑다운 방식으로 뷰 컨트롤러부터 만들었다면 뷰 컨트롤러를 만들면서 결국 모델을 정의해 줘야 한다

그래서 튜터님은 만약 단계를 밟아 가고 싶다, 머리가 덜 아픈 쪽을 택하고 싶다 하면

  1. Model부터 먼저 정의(사전에 미리 클래스명도 정해놓는 것도 좋다.)

  2. View와 ViewController를 같이 구현

구현하면서 만들어놨던 모델을 수정을 하고.. 이걸 계속 반복
이 순서대로 즉 바텀업 방식으로 구현하는 걸 추천한다고 하셨다

폴더링

초반에 프로젝트 폴더랑 하거나 구조를 잡는데 어려움을 많이 느낄 텐데
어떻게 해야 할지도 모르겠고 순서에 맞춰서 하고 싶다고 한다면

MVC 패턴의 경우 Model, View, Controller 3개 폴더를,
MVVM 패턴의 경우 Model, View, Controller, ViewModel 이렇게 4개 폴더를 만들어놓고 시작하면 된다고 한다
그리고 그때그때 생성되는 파일들을 맞게 분류해서 넣으면 됨

4 MVVM 패턴의 경우 Model, View 그리고 Presentation이라는 폴더를 만들어
ViewController와 ViewModel 파일을 붙여서 놓고 하는 것도 방법이라고 알려주셨다

캡슐화

외부와 통신하는 그런 것들을 최소화해야 한다
꼭 필요한 것만 통신을 해야 하는데 외부에서 갖다 쓰는 게 아닌 이 안에서만 쓰는 거라고 한다면
private 을 붙여서 막아두는 것이 좋다고 한다

extension을 잘 활용해라

MVC 패턴이라면 어쩔 수 없이 컨트롤러가 길어질 텐데
최대한 가독성 좋게 하려면 extension을 적극적으로 사용하면 된다

IBOutlet, 프로퍼티, deinit 이런 반드시 클래스 선언부에 들어가야 하는 애들을 제외하고는
아래 extension을 사용해서 아래에 정의해 주는 것이 좋다
예를 들어 viewDidLoad에 많이 적어놓으면 다른 사람이 딱 봤을 때 읽기가 굉장히 힘든데
함수로 묶어서 아래에 정의해두면 비교적 깔끔해져서 이해하기 쉽다