[우아한테크코스 7기] 프리코스 3주차 회고
3주차 미션 “로또” 미션 완료 후 하는 회고
1~3주간 과정을 진행하며 느낀 것과 이를 바탕으로 마지막 과제를 어떻게 진행할 지 기록해보려고 한다.
1. 1, 2주차. 그리고 3주차
1, 2주차의 문자열 덧셈과 자동차 경주 과제를 진행하면서, 생각보다 어렵지 않다는 생각이 들었다. 입출력도 간단하였고 나름대로의 디자인 패턴과 MVC 패턴을 적용해보며 재미있고 할만하다고 느끼기도 했고.
지금와서 생각해보면 과제가 쉬울 때 여러가지 만들어보며 해당 부분을 마스터하라는 의미가 아니었을까.. 생각된다.
1주차에서 문자열 분리와 Git
2주차에서 TDD와 함수 최소화와 기능 분리
3주차 작업을 하면서, 해당 부분에서 미흡하게 했던 부분이 3주차 과제를 진행할 때 발목이 잡혔다. 검증 로직의 위치와, 도메인 함수의 역할 분리도 너무 어려워서 시간을 정말 많이 쏟았다. 또한 기능 명세를 처음에 적당히 체크리스트를 작성하는 정도로 했는데, 이번 과제에서 부족함을 많이 느껴서 도메인 중심의 기능 분리 위주로 기능 명세를 작성해보려고 한다.
2. 잘한 점
일단 잘 했다고 생각되는 점은
- 중복되는 기능 분리
- MVC패턴 적용과 Config
- 요구사항 구현
점점 늘어나는 요구사항이 정말 쉽지 않지만 최대한 틀린 점 없게 구현하기 위해 노력하는 중이다.
3. 개선이 필요한 점
개인적으로 개선이 필요한 부분이 정말 많다고 생각하지만, 특히 꼽아보자면
- TDD보다는 먼저 구현하고 테스트를 진행했던 점
- 검증과 책임 분리
작업을 할 때, 메인 로직과 모델을 통한 TDD를 통해 차근차근 진행했어야 했는데, 보여지는 부분을 순서대로 구현하며 View와 검증 로직에 매몰되어 시간을 정말 많이 소요했다. TDD로 단위 테스트를 구현하며 진행했다면 체계적으로 구현해 나갈 수 있었을텐데, 전체 로직을 작성한 후 테스트를 작성할 때 쉽지 않았다. 작성한지 오래된 부분은 테스트 할 때 잘 기억이 나지 않아 계속 이동해서 찾아봐야 했으며, 단위로 실행될 수 없는 private 접근 제어자를 가진 함수에 대한 고민도 많이 했었다. 그래서 이런 함수는 그냥 포함한 함수로 퉁 쳐서 테스트를 구현하게 되는 부분이 아쉽기도 하다.
마무리
3주차 과제가 종료되고 코드에 대한 다양한 고민을 해보았고, 가장 성장했던 시간이었다. 특히 개인적으로는 도메인에 대해서 많은 생각을 하게 되었다. 입력 부분의 검증과 객체로서의 검증.. 또 이번 3주차 피드백에는 고민했던 부분에 대한 정보가 많아서 좋다. 피드백을 수시로 참고하고, 기능 명세를 더 깔끔하게 써봐야겠다. 당연히 TDD도 최대한 적용해보려 한다.