https://github.com/woowacourse-precourse/java-lotto-6

What I Learned

TDD 후기

저번주차에선 모든 구현을 마치고 테스트 코드를 작성했다. 그랬더니 사실 테스트 코드 작성하기 귀찮았다. (그래도 했다) 테스트 코드를 만드려니, 내가 만든 기능 하나하나 다시 정확히 이해하고 예외사항을 점검했다. 테스트 코드하다 만난 버그를 수정하기 위해 다시 리팩토링 과정을 거쳤다. 그래서 그런지 과정이 익숙치 않았고 어려웠다.

TDD를 적용하기 위해 수많은 유투브를 보았다. TDD 라이브 코딩하는 영상을 그렇게 봤다. 30분, 1시간, 2시간 등 다양한 영상을 보면서 어떻게 하나 넷플릭스 보듯이 봤던 것 같다. 그렇게 나도 이렇게 하면 되지, 했다가 정작 혼자 하려니 꽤 어려웠다. 그래서 이번 주차에선 TDD를 학습하는데 많은 시간을 공들인 것 같다.

이번에 TDD를 하면서 느낀 점은 테스트 코드를 작성하고 리팩토링하기 까지 짧은 순환을 반복하니 더 수월하다는 거였다. 내가 만든 코드에 빠른 피드백을 받을 수 있었다. 그리고 테스트 코드를 작성하기 위해선 요구사항을 더 세세히 판단해야 한다. 기능 목록을 작성하고, 입출력을 정하는 것이다. 이는 자연스레 추상화 설계로 이어졌다. 책임과 역할에 집중함으로써 자연스레 객체지향스러운 코드를 얻게 되었다.

기능 목록 및 예외 사항 작성 초안

기술 블로그 정리 글: https://trashyou.tistory.com/158

정적 팩토리 메서드 활용

정적 팩토리 메서드에 대해 공부했다. 정적 팩토리가 가진 이점은 이름을 가질 수 있고, 하위 객체형 자료를 반환할 수 있으며, 객체 생성을 캡슐화 할 수 있다는 것이다. 나도 이번에 미션을 진행하면서 적용해봤다.