[우아한 테크코스] 3주차 회고록

수민·2024년 11월 5일
post-thumbnail

개요


벌써 3주차가 끝났다.
내 인생에서 가장 바쁘고 빠르게 지난 3주였다.
이번 주차에서는 2주차에서보다 훨씬 구현할 기능이나 생각할 부분이 늘어났다. 그리고 그만큼 얻은 지식이나 깨달은 점이 많아 그 위주로 정리해보고자 한다.

PR 주소


https://github.com/woowacourse-precourse/javascript-lotto-7/pull/312

바뀐 점


MVC 모델 적용

2주차 코드 리뷰를 받은 것 중 하나였다.
"MVC 모델을 적용해보면 더 깔끔하지 않을까요?" 라는 피드백을 받았는데 Swift 쓸 때 한 번만 사용해보고 적용해본 적이 없어 MVC 모델에 대해 조사해보았다.
view, domain, controller를 따로 분리해 파일 구조를 나누니 훨씬 깔끔해지고 다른 사람들이 보기에도 이해하기 쉬울 것 같았다. 1주차부터 디자인 패턴을 적용하면 좋을텐데.. 라고 막연히 생각했던 부분을 도입하게 되어 성장했다고 느꼈다!!(뿌듯 ..!)

TDD 도입

테스트 코드 작성은 2주차부터 지금까지 너무 어렵다... 그 와중에 저번 주차를 끝내고 TDD에 대해 조사해보며 '아 이번에 TDD를 도입했다면 예외 케이스를 놓치지 않았을텐데..'라는 생각이 들었고 이번에 도입하기로 마음 먹었다.
그런데 이 부분에서 가장 많은 시간이 들 것이라곤 생각도 못했다.
우선 "아무런 코드가 작성되지 않았는데 어떻게 테스트 코드를 작성하지?!"라는 생각이 지배적으로 들었다. 만든 함수가 없다보니 '함수 이름은? 그 함수로부터 어떤 결과값이 나와야하지? 이런 정보도 없이 테스트 코드를 짠다고?'라는 생각이 무한반복으로 들며 시작하는 데에 가장 많은 시간이 든 것 같다.
구글링을 정말 많이 했고, 주변 선배들한테도 물어가며(gpt에게도 물어보며..) 테스트 코드를 작성했다.
사실 지금도 제대로 짠 게 맞는지 모르겠다...
커밋 기록을 보면 처음에는 expect 안을 비워놓고 테스트 코드를 짰고, 이후에는 메서드 이름을 가정한 채로 짰는데 뭐가 맞는건지..!

text 비워놓고 테스트 코드를 짠 경우

text 메서드 이름을 가정한 채로 짠 경우

(보신 분들 알려주시면 정말 감사하겠습니다 ...ㅠㅠㅠ)

이렇게 어렵게 짠 TDD를 통해 느낀 큰 장점이 있다.
이후에 코드의 구조나 로직을 변경하게 되었을 때 제대로 동작하는지 빠르게 확인할 수 있다는 점이다!! 이전이었다면 입력값을 케이스에 따라 하나하나 넣어봤을텐데 테스트 하나만 돌려보면 된다니 정말 편했다.
또한 짜야하는 메서드나 반환값이 정해져 있으니 그에 따라 빠르게 개발할 수 있다는 점도 좋았다.
다음 주차에도 TDD를 적용해 개발해볼 생각이다. 다음 주는 더 나은 TDD를 짤 수 있으면 좋겠다...
그래도 시도하고 도입해봤다는 것에 의의를 둔다!!

상수 처리

이것 또한 저번 주차에 받은 피드백이다!
사실 이전 주차부터 생각한 부분인데 '에러 메세지 어차피 한 번 사용하는거 상수 처리를 해야하나..?'라는 생각을 했다.
그런데 만약 추후 변경을 하게 되거나, 이번 주차에서 로또 길이, 최소 최대 숫자 같은 경우에는 여러 번 사용이 되기 때문에 상수 처리를 하는 게 좋겠다는 생각이 들었다.
constants 폴더를 만든 후 constant, message, error 파일로 나누어 정리했다.
Object.freeze를 통해서 값을 변경하지 못하도록 만들어줬다!
이번에는 같은 상수를 여러 번 반복해 사용하는 경우가 많았어서 상수 처리를 하길 정말 잘했다는 생각이 든다.

아쉬운 점


  1. 이번 주차에는 메서드의 길이가 15줄 이상이 넘어가면 메서드 분리를 하라는 요구사항이 있었다. 모든 제출이 끝난 후 다시 확인을 해보니 메서드 하나가 17줄이었다..!! 이전에 체크했을 때는 왜 확인을 못한건지 ... ㅠㅠㅠ 다음에는 요구사항을 잘 지키기 위해 노력해야겠다.
  2. 변수명 정하기
    지어야할 변수명이 많아지다보니 점점 정하기가 어려워지거나 이미 지어둔 변수명과 비슷해지는 경향이 있었다. 처음부터 정확하게 나타내는 변수명을 짓기위해 노력해야겠다.

노션


3주차 미션을 진행하며 공부했던 것, 고민했던 것을 노션에 간단히 정리했었는데 그 정리본도 남긴다.
https://www.notion.so/3-132f3b205f1e80789bffc3aafb5176ac

소감


이번 주차 문제를 풀면서 '1,2주차는 3주차를 위한 준비 단계 문제가 아니었을까?' 라는 생각이 정말 많이 들었다. 1,2주차에서 받은 피드백과 생각했던 것들, 고민했던 것들을 모두 적용해볼 수 있는 주차였다.
그리고 웃겼던 것은 로또들이 생성된 뒤에 로또 당첨 번호를 입력하는 형식이라
'이게 맞나..? 내가 잘못 만든건가..?'해서 문제를 읽고 또 읽었다. 근데 디스코드를 보니 다른 사람들도 같은 고민을 했던 게 보여 웃겼다ㅋㅋ
이번 주에는 과제, 해커톤 등 해야할 게 너무 몰려서 금토일을 거의 밤을 새며 진행했었는데 그래도 나름 성장한 것 같아 다행이다.. 리팩토링에 시간을 많이 못써 아쉽다. 4주차는 마지막이니 불태워봐야겠다!!!

0개의 댓글