⚙️ 2주 차 목표

1주차 미션을 완료한 후 가장 먼저 한 일은 공통 피드백을 꼼꼼하게 읽어보는 것이다. 피드백을 읽어보며 나한테 부족한 부분을 개선하기로 결심하고 2학기 목표는 다음과 같이 설정하였다.

  1. MVC 패턴 적용하기
  2. 테스트 코드 효율적으로 작성하기

📢 MVC 패턴

MVC 패턴을 적용하기 위해 먼저 MVC 패턴이 뭔지 학습을 진행하였다. Model, View, Controller를 줄여서 MVC라고 불렀는데, 각각의 역할을 알고나니 개발할 때 역할 분리하기에 좋은 패턴이라는 것을 느꼈다. 그래서 2주차 미션에 바로 적용해보고 싶었다. 그래서 자동차 경주 프로그램에서는 다음과 같이 MVC 패턴을 적용하였다.

  • Car(Model): 자동차의 이름과 위치의 데이터를 관리하는 모델
  • App(View): 경주에 참가할 자동차들의 이름과 라운드 수를 입력받고 각 라운드 마다 결과와 우승자를 출력하는 뷰
  • CarRacingGame(Controller): 사용자의 입력과 Car 모델 사이의 데이터 흐름을 제어하여 자동차 경주를 진행하는 컨트롤러
  • Validator: 사용자 입력의 유효성을 검증하기 위한 객체

2주차 미션에서는 다음과 같이 클래스를 정의하고 설계를 진행하였다. 완성하고 나서 생각해보니 Validator는 클래스가 아닌 함수로 구현하는 것이 더 적합하다는 생각이 들었다. (3주차 미션에는 그렇게 해야지)

그리고 View를 나타내는 부분도 App에서 해결하는 것이 아니라 View 클래스를 하나 만드는 것이 더 깔끔하다는 생각이 들었다. 그래서 추후에 MVC 패턴을 적용하게 된다면 좀 더 확실하게 적용해볼 것이다.


🛠️ 테스트 코드

1주차 미션을 수행하던 당시에는 Jest 프레임워크를 처음 사용해보기도 했고 테스트 코드의 중요성에 대해서 자세히 잘 알지 못했다. 그런데 공통 피드백에서 피드백 해줄 정도면 이건 진짜 중요한거구나 라고 생각해서 Jest를 학습하기 시작하였다. 그러면서 자연스럽게 테스트 코드의 중요성도 알게되었고 이번에는 성공 케이스와 예외 케이스를 세심하게 테스트해보고 테스트 코드도 리팩토링을 진행하고자 결심했다.

 

1주차에서 테스트 코드를 작성할때는 모든 테스트 케이스를 test 메서드를 활용해서 하나하나 구현하였다. 2주차 미션에서는 공통 피드백을 반영하여 test 메서드 내의 중복되는 로직을 묶어서 test.each를 사용하여 구현하였다. 그리고 each 안에 들어가는 배열을 따로 분리하여 코드의 가독성을 높혔다.

 

그리고 성공 케이스와 예외 케이스를 여러가지 생각하며 세심하게 테스트를 진행하였더니 구현할때는 미처 알지 못했던 예외 상황을 많이 발견할 수 있었다. 다음주도 테스트 코드를 열심히 작성해볼 생각이다.

 

역시 테스트 코드는 괜히 사용하는게 아니구나 ㅎㅎ


💡 알게 된 점

2주 차 미션을 수행하면서 새롭게 알게 된 점은 아래와 같다.

  • MVC 패턴의 개념
  • test.each, describe.each 사용법
  • 여러가지 using Matchers

🤔 개선할 점

3주 차 미션에서는 다음과 같은 사항을 개선하기로 하였다.

  • 게터와 세터 사용하지 않기
    • 객체에 직접 요청할 수 있는 메서드로 구현하는 것이 권장되기 때문이다.
  • 테스트 코드에 각 테스트 별로 어떤 기능을 테스트하는건지 설명 추가하기
    • 테스트에 관한 설명이 없으면 어디서 실패한건지 명확하게 알 수 없기 때문이다.
okojin