[공부일지] 코딩은 어렵지 않습니다. 정말 어려운 것들은 MIT미디어랩에서 하는 게 어려운 것들이고 코드로 화면을 만드는건 전혀 어려운게 아닙니다.

Uno·2021년 8월 2일
0

공부일지

목록 보기
4/5

해당 글은 아래 링크 영상을 보고 느낀점을 작성한 글입니다.

영상 1:23초에 이런 말씀을 하십니다.

코딩은 어렵지 않습니다. 정말 어려운 것들은 MIT미디어랩에서 하는 게 어려운 것들이고 코드로 화면을 만드는건 전혀 어려운게 아닙니다.

아직도 화면 만드는게 아주 쉽다고는 말은 못하겠습니다.

다만, 시간을 투자하면 결국 다 해결되더라구요.

화면을 만드는 것

화면을 만든다는 건, 무엇인가 고민해봤습니다.

  • UI 컴포넌트를 생성
  • 생성한 컴포넌트를 배치
  • 컴포넌트에 동작을 추가

이 3 과정이지 않을까 생각됩니다.

여기에 추가하자면, 애니메이션을 추가하기도 하고 적절한 이미지를 추가하기도 하겠죠. 그런 분들은 마이너한 부분이니 생략하겠습니다.

물론 컴포넌트를 생성 -> 배치 -> 동작추가
이 과정을 효율적으로 하는 것들이 많이 있겠지만, 본질은 똑같다고 봅니다.

편리하게 해주는 snapKit, then 등등의 좋은 라이브러리를 활용하기도하고
UIKit에서는 Autolayout 이나 UIKit에서 제공하는 UI 구현 방법들이 있으며

SwiftUI 만의 Stack을 활용한 UI 배치 Combine 개념을 활용한 상태에 따른 UI 업데이트 개념등이 있죠.

어떤 프레임워크나 라이브러리를 사용하더라도 3 가지 질문에만 답변할 수 있으면 모두 구현할 수 있다고 봅니다.

Q. 어떻게 생성하지?
Q. 어떻게 배치하지?
Q. 어떻게 로직을 추가하지?

데이터를 관리하고 전달하는 것

iOS 프로그래밍을 계속 하면서 느낀점은 데이터 관리와 전달을 잘하는 것이 추후 유지보수의 난이도를 결정한다는 것을 느꼈습니다.

특정 화면에서 추가한 데이터가 어떤 컨트롤러까지 혹은 어떤 View까지 사용되는지에 따라서 NotificationCenter를 이용한 데이터 전달이나 Delegattion을 활용할지 그리고 싱글톤을 사용할지를 결정하기도 합니다.

여기서 좋은 선택지를 잘 고른다면, 관리가 상당히 용이하더라구요.

프로젝트의 구조를 결정하는 것

또 MVC 패턴으로 모든 프로젝트를 구현하다보면, 특정 컨트롤러나 특정 뷰에서 너무 많은 코드가 있는 경우가 있습니다.

특히, 메인 기능을 구현하는 부분이 특히 그렇죠.

그런 경우, 해당 컨트롤러의 UI계층을 어떻게 짜는지나 해당 뷰의 아키텍쳐를 어떻게 구성하는지에 따라서 코드가 잘 분리되기도 합니다.

전 현재 MVVM을 공부하고 있어서 적용이 조금 부족합니다. 그래서 기본적으로 MVC로 구성합니다. (코드가 별로 길지 않은 경우)

특정 로직이 반복되고 로직을 분리해야하는 경우만 MVVM을 부분적으로 적용하고 있습니다.

컨트롤러에 너무 많은 로직이 추가되는 경우에 적용하곤합니다.

TableView나 CollectionView의 Datasource를 따로 class로 만들어서 구성하기도 하구요.

이런 노력들이 나중에 코드 수정할 때, 한눈에 파악하기가 쉽습니다.

결론

현재 프로젝트하나를 구현할 때, 어려운 순서는 아래와 같다고 생각합니다.

아키텍쳐 > 데이터 관리 및 전달 > UI 구현

만약 지금 UI 구현에서 어려움을 느낀다면, 아직 UI 구현이 익숙하지 않을 뿐이고, 검색과 프레임워크의 구성도를 이해하고 나면 해결될 문제입니다. 걱정마세요.

만약 지금 데이터관리 및 전달에 어려움을 느낀다면, 다양한 행동 패턴(아마 정보처리기사에서 이렇게 용어를 썼던 것 같습니다.)를 하나씩 익히면서 적용해볼 타이밍입니다.

만약 코드가 너무 복잡하고, 무언가 동일한 구조로 짜고 싶다고 느껴진다면, 아키텍처 구성하는 종류에 대해서 배울 차례입니다.

제가 이렇게 결론을 내면서 뭔가 가이드해드리는 것 같지만, 지금 제가 겪고 있는 상황 3 가지를 정리(가 아니라 반성)한 것 뿐입니다.(ㅠㅠ)

profile
iOS & Flutter

0개의 댓글