본문 바로가기

etc/우테코 6기 프리코스

1주차 프리코스 미션(숫자 야구 게임)

기능 요구 사항 & 프로그램 요구 사항 & 과제 진행 요구 사항


GitHub : https://github.com/JunTaeINC/java-baseball-6

 

GitHub - JunTaeINC/java-baseball-6: 우아한 테크코스 6기 프리코스 1주차

우아한 테크코스 6기 프리코스 1주차. Contribute to JunTaeINC/java-baseball-6 development by creating an account on GitHub.

github.com

 

 

 

문제 해결


1. 게임 관련 메시지 Enum Class 관리.

처음에 Enum Class에서 출력 메서드까지 구현을 했었다.

하지만 Enum Class는 메시지만 관리하는 역할에 위배돼서 출력 클래스(ConsoleUtil Class)를 추가 구현했다.

다른 방법으로는 상수를 구현을 해서 메서드를 만들어서 출력까지 관리하는 방법도 구현할 수 있을 거 같다.


2. 패키지 분리

우선 정상적으로 기능이 작동하도록 구현을 하는 것을 목표를 설정했다.

SOLID에서 단일 책임 원칙을 지키려고 나름 분리를 해봤다.

메서드도 한 가지  기능을 구현을 하도록 구현을 했다.

Before

After


3.  테스트 코드

기본적인 테스트를 구현하는 것은 쉽게 해결할 수 있었다.

하지만 유저에게 입력받는 경우는 테스트를 하기 까다로웠다.

그래서 Mockito의 spy 메서드를 활용했다.

@Test
void askToPlayAgain() {
	// spy 객체 생성
	UserInput userInput = spy(new UserInput());
    	// spy 객체의 getUserInput() 메서드가 호출 되면 "1"를 반환하도록 설정
	doReturn("1").when(userInput).getUserInput();

	boolean actualResult = userInput.askToPlayAgain();

	assertThat(actualResult).isTrue();
}

 

 

 

미션 진행 후기


작년에 우테코 5기를 지원을 했었다. 5기에 나왔던 문제를 다시 풀게 돼서 나름 쉽게 풀 수 있었다. 
패키지를 분리하면서 단일 책임 원칙을 지키려고 하니 코드가 전체적으로 깔끔해져서 보기가 좋았다. 
메서드 이름을 신경 써서 작성하여 주석이 필요 없이 메서드만 봤을 때 어떤 기능을 하는지 알 수 있게 고민하는 시간이 되었다. 
이번 미션에서는 인터페이스를 구현을 하지 못했는데, 추후 미션을 진행하며 인터페이스를 구현을 해서 확장성까지 고민할 수 있는 시간이 되면 좋겠다.