-
커뮤니티 게시판 프로젝트를 마치고 느낀점기타/느낀점 | 회고 2022. 1. 7. 00:57
프로젝트 설명
⚠️ 해당 프로젝트는 클론 코딩이 아닙니다. API명세와 디자인 가이드을 받아 주도적으로 기획하고 구현한 프로젝트입니다.
⚠️ 21.01.03(월) ~ 21.01.06(목)까지 정해진 기간동안 구현한 프로젝트이고,
⚠️ 21.01.09(월) ~ 21.01.13(목)까지 개인적인 리펙토링 후 피드백을 받았습니다.Auth : 로그인, 회원가입, 비밀번호 변경(API는 구현했지만 View를 구현 못함..)
Post : 게시판 형식에서 게시글 조회, 추가 / 상세조회, 수정, 삭제
Comment : 상세조회 페이지에서 댓글에 대해서 추가, 조회, 수정, 삭제
즉 게시판 형식의 CRUD를 모두 구현해봤습니다.
Code Base UI
MVVM ( 기존 목표였지만, 리펙토링 단계에서 추가 )
URLSession(라이브러리 사용 X 권장)
Custom View(추상화)
위와 같은 항목들을 권장하는 조건에서 프로젝트를 진행했습니다.
UI는 당근 마켓을 참고했습니다.
프로젝트를 하고 느낀점
긍정적
1. View에 대해서 굉장히 많은 추상화를 진행했다.
비슷한 특성의 View에 대해서는 공통점에 대해서 추상화를 한 Class를 상속받아 구현하는 방식으로 리펙토링을 했다.
처음엔 어떤 방식으로 추상화를 해야 할지 고민이 많았지만, 차근차근 한 단계씩 추상화를 진행하니 수월하게 진행됐다.
그 뒤에는 UI를 구현하는 속도가 빨라져서 짧은 기간 몰아치는 프로젝트임에도 만족스러운 UI를 구현할 수 있었다.
2. FlowChart를 작성해서 효과적으로 설계를 할 수 있었다.
FlowChart를 작성하면서 어플의 로직이 어떻게 구성되어야 할지 많은 고민을 했다. 처음 설계한 그대로이기 때문에 완벽하게 구현한 내용과 일치하지는 않지만, 미리 생각해놓은 로직이 있기 때문에 방황하지 않을 수 있었고 흐름도 쉽게 파악할 수 있었다.
이전에 앱 출시 프로젝트를 할 때, 구체적인 설계가 필수적이라는 생각이 들었기 때문에 이번 프로젝트에 적용해보았는데 정말 효과적이어서 뿌듯했다. 특히나 위의 1번에서도 말했듯이 4일이라는 짧은 기간 동안 몰아치는 프로젝트에서 방황하지 않을 수 있는 지도가 되어주었다.
아쉬운 점
1. Rx, MVVM에 대한 설계능력이 부족하다는 것을 한번 더 느꼈다.
Rx, MVVM은 정말 최근에 배우기 시작했기 때문에 당연한 결과이다. 처음 구상을 할 때, MVC패턴으로 만들어놓고 MVVM으로 전환하면서 필요한 부분들에 하나씩 RX를 적용해보겠다고 생각했었다. 하지만 그저
구현
하는데도 시간이 부족했기 때문에 아키텍처 변환은 거의 손도 대지 못했다.하지만 RX를 어디에 적용하면 좋을지 지속적으로 생각한 결과, 클릭이벤트에 대해서는 기존의
addTarget
보다 훨씬 깔끔하고 쉽게 구현할 수 있다는 것을 알았다. 물론 비동기적인 흐름에 대해서는 대부분이 효과적이겠지만, 지금 내 수준에서는rx.tap
을 구현하는 것으로 만족했다.RX를 특히나 적극적으로 도입했던 회원가입
validation
부분에서 굉장한 만족을 느꼈다. 여러 가지 TextField의 Text에 대해서 직관적으로 유효성 검사 로직을 구현할 수 있었는데, 다른 부분에 대해서도 이런 방식으로 적용해보고 싶다는 생각이 강하게 들었다.그래서 Github에 있는 여러 가지 Rx Example을 아카이빙해 두고 코드를 하나씩 뜯어보며 공부해보기로 했다.
깨달은 점
설계, 구조화, 추상화
시간에 쫓기더라도 나무만 보고 숲을 보지 못한다면 오히려 더 시간에 쫓기게 된다는 것을 깨달았다.
처음부터 설계했던 부분들에 대해서는 복잡하더라도 수월하게 넘어갔던 반면, 그때그때 즉흥적으로 했던 구현들에 대해서는 다시 리펙토링 작업을 거치게 되면서 두배의 시간을 소모하게 되었다. 아마 이번에 MVVM을 제대로 적용하지 못했던 것도 처음에 설계를 하지 못했기 때문이라고 생각이 든다. 처음부터 책임을 나눠가며 구현을 했더라면 MVC -> MVVM으로 전환하는데도 많은 시간이 걸리지 않았을 것이다.
결론
코더가 아닌 설계자가 되자
'기타 > 느낀점 | 회고' 카테고리의 다른 글
백준 플레 5 달성 (1) 2023.06.26 [부스트캠프] 부스트 컨퍼런스 2022 참여 & 발표 후기 (0) 2022.10.23 첫 앱을 출시해보고 느낀 점 (0) 2021.12.14