
벌써 3주차가 끝났다.
내 인생에서 가장 바쁘고 빠르게 지난 3주였다.
이번 주차에서는 2주차에서보다 훨씬 구현할 기능이나 생각할 부분이 늘어났다. 그리고 그만큼 얻은 지식이나 깨달은 점이 많아 그 위주로 정리해보고자 한다.
https://github.com/woowacourse-precourse/javascript-lotto-7/pull/312
2주차 코드 리뷰를 받은 것 중 하나였다.
"MVC 모델을 적용해보면 더 깔끔하지 않을까요?" 라는 피드백을 받았는데 Swift 쓸 때 한 번만 사용해보고 적용해본 적이 없어 MVC 모델에 대해 조사해보았다.
view, domain, controller를 따로 분리해 파일 구조를 나누니 훨씬 깔끔해지고 다른 사람들이 보기에도 이해하기 쉬울 것 같았다. 1주차부터 디자인 패턴을 적용하면 좋을텐데.. 라고 막연히 생각했던 부분을 도입하게 되어 성장했다고 느꼈다!!(뿌듯 ..!)
테스트 코드 작성은 2주차부터 지금까지 너무 어렵다... 그 와중에 저번 주차를 끝내고 TDD에 대해 조사해보며 '아 이번에 TDD를 도입했다면 예외 케이스를 놓치지 않았을텐데..'라는 생각이 들었고 이번에 도입하기로 마음 먹었다.
그런데 이 부분에서 가장 많은 시간이 들 것이라곤 생각도 못했다.
우선 "아무런 코드가 작성되지 않았는데 어떻게 테스트 코드를 작성하지?!"라는 생각이 지배적으로 들었다. 만든 함수가 없다보니 '함수 이름은? 그 함수로부터 어떤 결과값이 나와야하지? 이런 정보도 없이 테스트 코드를 짠다고?'라는 생각이 무한반복으로 들며 시작하는 데에 가장 많은 시간이 든 것 같다.
구글링을 정말 많이 했고, 주변 선배들한테도 물어가며(gpt에게도 물어보며..) 테스트 코드를 작성했다.
사실 지금도 제대로 짠 게 맞는지 모르겠다...
커밋 기록을 보면 처음에는 expect 안을 비워놓고 테스트 코드를 짰고, 이후에는 메서드 이름을 가정한 채로 짰는데 뭐가 맞는건지..!
비워놓고 테스트 코드를 짠 경우
메서드 이름을 가정한 채로 짠 경우
(보신 분들 알려주시면 정말 감사하겠습니다 ...ㅠㅠㅠ)
이렇게 어렵게 짠 TDD를 통해 느낀 큰 장점이 있다.
이후에 코드의 구조나 로직을 변경하게 되었을 때 제대로 동작하는지 빠르게 확인할 수 있다는 점이다!! 이전이었다면 입력값을 케이스에 따라 하나하나 넣어봤을텐데 테스트 하나만 돌려보면 된다니 정말 편했다.
또한 짜야하는 메서드나 반환값이 정해져 있으니 그에 따라 빠르게 개발할 수 있다는 점도 좋았다.
다음 주차에도 TDD를 적용해 개발해볼 생각이다. 다음 주는 더 나은 TDD를 짤 수 있으면 좋겠다...
그래도 시도하고 도입해봤다는 것에 의의를 둔다!!
이것 또한 저번 주차에 받은 피드백이다!
사실 이전 주차부터 생각한 부분인데 '에러 메세지 어차피 한 번 사용하는거 상수 처리를 해야하나..?'라는 생각을 했다.
그런데 만약 추후 변경을 하게 되거나, 이번 주차에서 로또 길이, 최소 최대 숫자 같은 경우에는 여러 번 사용이 되기 때문에 상수 처리를 하는 게 좋겠다는 생각이 들었다.
constants 폴더를 만든 후 constant, message, error 파일로 나누어 정리했다.
Object.freeze를 통해서 값을 변경하지 못하도록 만들어줬다!
이번에는 같은 상수를 여러 번 반복해 사용하는 경우가 많았어서 상수 처리를 하길 정말 잘했다는 생각이 든다.
3주차 미션을 진행하며 공부했던 것, 고민했던 것을 노션에 간단히 정리했었는데 그 정리본도 남긴다.
https://www.notion.so/3-132f3b205f1e80789bffc3aafb5176ac
이번 주차 문제를 풀면서 '1,2주차는 3주차를 위한 준비 단계 문제가 아니었을까?' 라는 생각이 정말 많이 들었다. 1,2주차에서 받은 피드백과 생각했던 것들, 고민했던 것들을 모두 적용해볼 수 있는 주차였다.
그리고 웃겼던 것은 로또들이 생성된 뒤에 로또 당첨 번호를 입력하는 형식이라
'이게 맞나..? 내가 잘못 만든건가..?'해서 문제를 읽고 또 읽었다. 근데 디스코드를 보니 다른 사람들도 같은 고민을 했던 게 보여 웃겼다ㅋㅋ
이번 주에는 과제, 해커톤 등 해야할 게 너무 몰려서 금토일을 거의 밤을 새며 진행했었는데 그래도 나름 성장한 것 같아 다행이다.. 리팩토링에 시간을 많이 못써 아쉽다. 4주차는 마지막이니 불태워봐야겠다!!!