이번주 미션에서의 강조점은
1. 클래스(객체)를 분리하기
2.도메인 로직에 대한 단위 테스트를 작성하기
였다.
2주차에서는 데이터를 저장하는 클래스를 만들고, 이 객체를 처리하는 클래스를 또 만들어서 사용했었다. 이렇게 하다보니 다른 두 클래스간 종속성이 너무 큰 것이 아닌가하는 고민이 있었다.
하지만 이번에는 2주차 막바지부터 클래스 분리에 대해 공부하면서 알게 된 일급 콜렉션을 적용하니 이러한 점에서 조금 개선된 클래스 작성을 할 수 있었다.
사전에 제공된 Lotto 클래스에서 numbers가 Wrapping 되어 있는 것을 보고 여기는 반드시 일급 콜렉션을 적용해야겠다고 생각했고, 확실한 하나의 책임을 갖는 클래스를 만들 수 있었다.
나머지 클래스 또한 그렇게 만들어진 Lotto 클래스와 비슷한 수준의 책임을 가지도록 코딩하였다. 그렇게하니 전체적으로 2주차에 비해 수월하게 클래스 분리를 할 수 있었던 것 같다.
위 조건에서 도움을 많이 받았던 것 같다.
2주차에서 테스트코드를 작성할 때, 제일 어려웠던 것이 표준 입출력에 관련된 코드를 테스트하는 것 이었다.
하지만 이번에는 UI를 담당하는 로직은 아얘 다른 클래스로 분리해버리니 테스트 코드를 작성하는 것이 꽤 편했다.
그리고 이렇게 테스트 코드를 작성해나가니 각 클래스들 이 가진 책임들이 명확해지고, 나중에 이들을 합쳐 코드를 완성했을 때 정보를 주고받는 것이 훨신 수월해진다는 것을 느낄 수 있었다.
위 두 가지를 제외하고 이번 미션을 진행하며 인상적이었던 조건은
Java Enum을 적용한다
라는 조건이었다.
Enum의 존재는 알고 있었지만, 개발에 적극적으로 사용해본 것은 이번이 처음이었다.
Enum을 사용하면서 하드코딩으로 작성될 수 있었던 특정한 데이터들에 이름을 부여하여 코드의 전체적인 가독성도 향상되고, 객체가 가진 책임도 더욱 명확해진다는 점에서 일급 콜렉션과 굉장히 비슷하다는 느낌을 받았다.
벌써 4주차 중 3주차가 끝나간다는게 신기하다..
짧은 기간이었지만 돌아보면 확실히 성장할 수 있었던 기간이었다.
남은 한 주도 화이팅!