2023년05월 4주차 회고

백상휘·2023년 5월 28일
0

회고

목록 보기
2/5

이번주에 한 것들을 토대로 얼마나 계획한대로 되었는지 보니 꽤 흡족하다.

  • 만들고 있는 앱의 로직을 짜는 일을 통해 깃허브 잔디심기를 반복한다. - (완료)
  • "2023 최신판 주요기업/금융권 IT·디지털 직무 채용대비 한권으로 합격하는 취업 코딩테스트" 챕터 1 을 읽고 Swift 코드를 작성하고 커밋한다. - (완료)
  • 이력서, 경력기술서 모두 노션으로 옮긴다. - (완료)

하지만 SwiftUI 버전과 관련된 부분은 진행하지 못했다.

결론적으로 3+1 을 계획했고 3 을 성공했다. 1 은 옵션이니 뭐 됐다.

고민을 좀 해보니 4+1 으로 계획해도 될 것 같다. 그래도 갑자기 한 개를 늘리면 실패할 수도 있으니 옵션인 1 을 그대로 가져오도록 하자.

요약은 이쯤하고 어떤 일이 있었는지 하나하나 떠올려보자.

앱의 복잡도가 증가하고 있다

이제 데이터를 입력하고 미리 저장한 데이터를 불러오는 로직을 짰다. 뭔가 앱이 일을 하기 시작한다.

앱, 즉 프로그램의 어원은 "미리 알려주다" 이다. 만약 내가 복잡한 기능을 가진 프로그램을 짰다면 내 머리가 아픈게 당연하다. 이상한 짓을 안하게 내가 한 일만 하도록 하면서 기능이 복잡하면 코드가 복잡해지는 것이다.

  • 활동 데이터를 미리 저장한다 -> 활동 데이터 파일 시스템 저장 혹은 메모리 저장
  • 활동 데이터를 목표 데이터의 하위 데이터로 저장한다 -> 메모리 저장
  • 미리 저장된 활동 데이터를 불러온다 -> 메모리 혹은 파일 시스템에서 불러옴

이제 코드 재사용성이 관건이다. 나는 코드를 나눠야 한다고 생각한다.

  1. 활동 데이터를 입력하는 폼에서 사용하는 로직
  2. 활동 데이터를 컨펌하는 로직
  3. 활동 데이터를 저장하는 로직
  4. 활동 데이터를 불러오는 로직

우선 입력 폼과 컨펌 로직을 나누는 이유는 입력하는 폼을 프리셋(활동 미리 저장해놓기), 목표 저장하기 두 도메인에서 사용하기 때문이다. 여기서 코드 재사용성을 발휘해서 효율적으로 코드를 짜려면 입력 로직을 나눠야 한다.

활동 데이터를 컨펌하는 로직은 설정과 연계된다. 컨펌 로직은 활용도가 무궁무진하다. 우선 내가 만드는 앱의 컨셉 중 하나는 "말도 안되는 목표를 짜는 걸 방지하기" 이다. 설정 기능에서 목표의 최대 활동 수를 정할 수 있도록 해놓고, 이 활동 수를 초과하면 경고하도록 한다.

또한, 컨펌 로직은 저장 로직을 scope 한다.

저장하고 불러오는 로직은 좀 짧게 가져갈 생각이다. 지금은 파일 시스템을 생각하고 있으며, 이벤트 기반의 기능들을 넣을 것 같다.

테스트 가능성?

TCA 의 리듀서 뿐만 아니라 모든 모델 객체는 API 를 하나만 가져야 한다고 생각한다. 예를 들어 활동 데이터를 저장하는 로직이라면 save() 정도만 있어야 한다는 것이다. save 하고 나서 완료 이벤트를 전달 받을 수 있다면 더 좋겠다.

즉, 전체적인 코드 리팩토링이 필요하다.

전체 리팩토링 vs 개발 진척도

CGV 대용량 팝콘도 부족할 주제다.

사실 얘기하자면 이번주는 개발 진척도에 시간을 많이 썼다. 2주 정도 개발을 했는데 CRUD 가 없다는 건 좀 너무하지 않나? 라는 생각이 들었다.

콜라 한잔 마시면서 생각을 좀 해봤다. 핑퐁핑퐁 하듯이 리팩토링, 기능개발, 리팩토링, 기능개발 이게 맞나????

만약 내가 회사에서 개발을 한다면 물론 마케팅, 기획의 판 안에서 가장 효율적인 제스처를 취할 것이다. 우선 나 혼자 만드는 서비스가 아니고 이 사람들도 다 생각이 있으니 그런 결정을 했겠지....... 라고 믿고 하는 거다. 이런 걸 안 믿을 거면 우린 회사에 모여 일을 하는 이유가 없다. 각자 프리랜서의 길로 흩어지는 것이 세상을 더 밝게 만드는 길일 것이다.

우선 다음주에도 기능 개발을 멈추지는 않을 것이다. 지금 활동을 입력하는 로직은 좀 거지같아도 완성은 되었는데 여기서 리팩토링 했다가 삭제 로직에서 리팩토링 한 것을 모두 엎어야 할 수도 있다. 즉, CRUD 와 외부 디펜던시까지 다 진행이 되고 나서 리팩터링을 시작한다.

그래도 저번주랑 똑같이 한다? 이건 성에 차지 않는다.

테스트 코드 작성 시작!

테스트에 진심... 이다. 마음은 진심이다!

물론 테스트에 대한 부채는 항상 있었다. 그러나 개발 진척도를 끌어올려야 할 때였고, TCA 에 굉장히 서툰 상황이었다.

이제는 TCA 의 기본 사용법을 알았다. 이제는 TCA 의 심화과정이라고 생각하고, 여러 사용법들을 추가로 익히면서 테스트코드 를 작성해봐야겠다.

리팩토링은 다음주에 안한다. 하지만 테스트 코드는 작성 시작한다.

코딩테스트도 빼먹을 수 없다

위에서 말했다시피 코딩테스트 책 1챕터 다 읽고 문제도 다 풀었다. 푼 문제는 전부 백준 저지에서 정답 처리를 확인했고, 이 코드를 그대로 옮겨서 커밋한 뒤 PR 을 보냈다.

https://github.com/ydh0213/coding-test-book/pull/1

좀 쎄한건 이 분이 더 이상 레포지토리 관리를 하지 않으시는 것 같다는 생각이 든다. 마지막 커밋이 많이 오래됐다.

어쨋든 2 챕터도 진행한다. 똑같은 방식으로 문제 풀고 PR 보내는거다.

다음 주

  • 만들고 있는 앱의 로직을 짜는 일을 통해 깃허브 잔디심기를 반복한다.
  • 앱의 테스트 코드를 작성한다.
    • 테스트 코드 작성은 TCA 깃허브 README 를 따를 것이다.
  • 앱의 알럿 로직이 자꾸 화면을 뒤로가기 하고 있다. 이 문제를 해결한다.
    • UIViewRepresentable 을 사용해야 할 것 같다.
  • "2023 최신판 주요기업/금융권 IT·디지털 직무 채용대비 한권으로 합격하는 취업 코딩테스트" 챕터 2 을 읽고 Swift 코드를 작성하고 커밋한다.
profile
plug-compatible programming unit

0개의 댓글