2주차에 들어서면서 코드 작성에 대한 고민이 조금 더 많아졌습니다. 기존 1주차 처럼 기능 설계를 MVC로 잡으면서 Service 계층을 추가하여 책임에 대한 분리를 추가해주었습니다.
구현해야 하는 기능이 적다보니 위와 같이 패키지 구조를 잡는 것이 맞을까? 에 대한 생각을 했었습니다.
2주차까지는 메서드 이름을 기준으로 기능 명세서를 작성하고 작성된 명세서에 맞추어 commit을 해왔습니다. 다만, 과연 내가 무슨 작업을 하고있는지 제대로 알 수 있는가? 라고 하면 '아니요' 일 것 같습니다.
그래서 3주차부터는 메서드 이름은 물론 조금 더 자세한 설명과 기능 단위로 commit을 하기 앞서 commit 메세지가 조금 더 무슨 작업을 하였는지 명확히 드러내기 위해 노력해야 할 것 같습니다.
물론, Service 계층의 테스트는 기능의 역할이 제대로 수행되어야 하는지 검증이 필요하기 위해 테스트 코드를 작성하는 것을 필수적이였습니다. Car 객체 또한 마찬가지였습니다. 제가 고민한 문제는 Input과 Output 이였습니다.
이미 검증이 완료되어있는 readLine() 함수와 당연하게도 출력될 System.out.print 와 같은 것 들을 테스트 해야하나? 의문이 들었습니다.
그러다보니 Input에서 validate를 위한 메서드는 테스트를 하고 나머지 입/출력과 관련된 메서드들은 테스트를 진행하지 않았습니다 👊
이번 2주차에서도 Car 라는 하나의 Model 객체를 사용했습니다. 일회성 게임이다보니 여러 객체의 저장이 필수적이지 않다는 점을 고려하여 하나의 Model 객체를 이용해 Service에서 비즈니스 로직을 수행하도록 만들었습니다.
다만, Race 라는 객체를 생성하여 자동차들을 참여시키고 경주를 진행하는 것도 좋은 설계가 아니였을까? 라는 생각이 들었습니다.
이번 2주차도 공부가 많이 되었던 것 같습니다. MVC 패턴에 대해 이해도를 높이고 Service라는 계층이 있을 때 객체들간의 협력이 어떻게 이루어지는지 더욱 명확히 알 수 있었습니다.
아무튼! 목표는 늘 그랬듯이, 우아한테크에 합격하는 것 입니다. 마지막까지 최선을 다해봅시다 💪