너무나 기대하고 고대하던 우아한테크코스를 위한 프리코스가 시작이 되었다!

두둔! 역시 소문 그대로 클린 코드를 위한 프로그래밍 요구사항이 있었다. 친절하게 자바 컨벤션 관련 내용 링크도 달려 있었고 깃 커밋 로그에 대한 링크도 달려 있었다. 열심히 정독하고 시작을 한다.
1차 과제 주제는 베이스볼 게임이다. 사실 베이스볼 게임은 3달 전 혼자 만들어 본 경험이 있는 주제였다. 전공생들은 한 번씩 만들어 본다는 주제들을 다 도전 해 보았고 그중 하나가 베이스볼 게임이었다. 그 당시 만든 목적이 잘 만든다는 목적보다는 '일단 돌아가면 된다'라는 목적을 갖고 만든 탓에 코드가 참... 심각했다.(3 달 안에 이렇게 성장했구나!! 뿌듯 😊)

이러한 요구사항 속에서 코드를 작성하는 건 처음이었다. 그리고 내 코드가 누군가에게 평가를 받을 거란 생각에 너무 설레고 기대됐다. 먼저, 프로젝트 구조를 파악을 시도했다. 프로젝트에는 미리 만들어 진 RandomUtils라는 클래스가 있었다.
private static final Random RANDOM = new Random();
private RandomUtils() {
}
public static int nextInt(final int startInclusive, final int endInclusive) {
...
나라면 1~9까지만 생성이 되는 숫자를 리턴했을 것이다. 하지만 여기 클래스에는 외부에서 조금 더 유연성있게 가져다 사용 할 수 있게 시작과 끝을 정할 수 있는 파라미터를 받는다. 오... 벌써 무언가 배우기 시작했다... 행복하다...
정말 나의 모든 것을 쏟아 부울 수 있게 배웠던 모든 것을 적용해 나갔다. 먼저, 구현할 기능부터 read-me에 추가해보자!

이제 각 기능을 개발을 시작한다. 개발 방식은 TDD로 진행했다. TDD의 중요성을 이번 프로젝트를 하면서 엄청 깨달았다. 테스트를 하기 위해 기능을 개발하니 기능 자체가 너무 잘 쪼개지는 기분이었고(지극히 주관적..) 어떤 메소드를 public으로 해야할 지 판단이 더 잘 되는 것 같았다. 거기에 프로그래밍 요구사항까지 지키려보니 나름 이전 만들어봤던 Baseball Game에 비해 너무 깔끔했다.
누나가 게임을 하더니 0을 마구 눌러서 0도 유효성 검사에 넣게 되었다...
어제는 분명 완벽하다 생각하고 흐뭇한 생각에 잠이 들고 아침에 보면 리팩토링 해야 할 것들이 보인다. 원래 프로젝트는 기능을 추가하고 테스트가 잘 돌아가면 다음 기능으로 넘어가는 방식이었는데 이번에는 리팩토링을 하면 테스트가 잘 돌아가는지 확인을 하며 TDD의 참맛을 깨달았던 프로젝트였다.