프로젝트 하면서 제 상태입니다.
오늘 드디어 프로젝트 발표입니다.
어제 늦게까지 다들 열심히 진행했기에, 앱이 어느 정도 완성됐습니다.
그래서 오늘 TIL은 프로젝트를 진행하면서 전체적으로 느낀 점과 배운 점에 대해 말해보겠습니다.
제가 프로젝트에서 맡은 부분은 마이페이지였습니다.
나름 괜찮게 만든 것 같지만 이 코드는 내부적으로 문제가 있습니다.
바로, 코드의 데이터들이 이상하게 엮여 있다는 것입니다.
제가 처음에 구상한 것은 제 페이지에서 쓰이는 데이터 단위의 것들(이름, 전화번호, 사진 등)과
UI를 구상하는 각각의 것들(카드 Holder의 이름, 전화번호, 인스타그램 아이콘 등)로 나눠서
만들기로 했습니다.

근데 진행 과정에서 약간 제 생각과 다르게 흘러간 부분이 생겼습니다.
바뀌는 데이터들을 통해 UI를 다뤄야 하는데, 눈으로 보이는 데이터가 아닌
보이지 않는 데이터들이 존재하는 것이었습니다.
예를 들어, 눈으로 보이는 데이터는 위에 적은 것처럼 이름, 전화번호, 사진이 있습니다.
이들은 사용자가 편집 가능하게 만들어두었기에, 따로 데이터를 저장해야 합니다.
보이지 않는 데이터들은 SNS 목록을 접었는가 폈는가, 즐겨찾기 목록을 접었는가 폈는가 등이 있습니다.

문제는 이 두 데이터들 다 UI에 영향을 준다는 것이었고,
기존에 제가 쓰던 방식은 보이는 데이터에서만 받아서 쓰게 만들어두었단 것이었습니다.
물론, 보이지 않는 데이터들도 가능하게 만들 수는 있었지만,
그 당시 그런 데이터들이 커지는 게 싫었던 저는 극단적인 방법을 선택했습니다.
바로 UI 자체를 데이터가 먹어버리고, 보이지 않는 데이터 대신, 그냥 데이터에서 전부 처리하는 방식이었습니다.

저는 왜 자꾸 잘못된 선택을 하는 걸까요...
그래서 제가 생각한 개선점은 다음과 같습니다.

데이터 인터페이스를 하나 만들고 이를 받는 보이는 데이터, 보이지 않는 데이터 클래스를 만들어서
이 두 데이터로 UI를 그리는 방식입니다.
아직 시도는 안 해봤지만, 좋은 방법이 되지 않을까요?
저는 이번 프로젝트에서 MVVM과 레포지토리 패턴을 넣고 싶었습니다.
하지만, 첫 단추부터 MVC를 위한 방식으로 만들어둬서 그런지 바꾸기가 쉽지 않습니다.
또한, 패키지도 엉망으로 짜져 있다보니까 이걸 정리를 하려면 시간이 좀 걸리겠네요.
그래서 처음에 잘 만들어두는 게 좋은 것 같습니다.
이번 프로젝트는 그나마 7일동안 한 프로젝트기 때문에 다행이지만, 만약 최종 프로젝트에서 이랬다면?
엄청나게 시간이 걸렸을 것입니다.
이번 프로젝트에서 마지막으로 고민됐던 부분은 역할 분담입니다.
지금까지는 각자 페이지를 골라서 그 페이지의 UI, 데이터 등등을 전부 담당했습니다.
하지만, 이러다보니까 각자의 데이터를 쓸 때 이해가 안 되는 부분들도 있고,
UI가 통일되지 않는다는 점도 생겼습니다.
그래서 제가 생각한 건, 역할 분담을 UI, 데이터, 로직, 서버처럼 나누는 것입니다.
이렇게 되면, UI 2명, 데이터 1명, 로직 1명, 서버 1명 이렇게 나눠서 통일성을 지키기도 쉽고,
서로 이 코드에 대해 필요한 설명만 해주면 되기 때문입니다.
이건 아마 최종 프로젝트에서나 쓸 수 있을 것 같습니다.
오늘은 프로젝트 진행하면서 생각했던 것들을 적어봤습니다.
끝.