다잘하고싶어

[프리코스] 4주차 다리건너기 게임 본문

우테코 프리코스

[프리코스] 4주차 다리건너기 게임

챙영잉 2022. 11. 21. 11:44

1. 사용자로부터 이동할 칸 입력받는 과정

- 이해할 수 없는 에러. 

분명 옳은 값을 입력햇는데 인식을 못한다.

public String readMoving() throws IllegalArgumentException{
    String pickPart = getUserInput();
    System.out.println("입력하자마자 pickPart" + pickPart);
    isUorD(pickPart);
    return pickPart;
}

private void isUorD(String pickPart) throws IllegalArgumentException {
    System.out.println("넘어온 값 pickPart" + pickPart);
    System.out.println(pickPart.equals("U")? "o":"x");
    if(!pickPart.equals("U") || !pickPart.equals("D")){
        System.out.println("잘못");
        throw new IllegalArgumentException(Error.NOT_U_OR_D.getMessage());
    }
}

바로 위의

System.out.println(pickPart.equals("U")? "o":"x");

 

에 의해서는 O 출력해놓고 바로 예외처리에 걸린다.

왜? 왜 인식 못하는 거야,,

말하기도 부끄럽다 && 로 했어야 한다. 멍청..

if(!pickPart.equals("U") && !pickPart.equals("D")){

리팩토링 시작

오랜 기간 코딩하다보니 요구사항을 놓쳤나보다.

  • BridgeGame 클래스에서 InputView, OutputView 를 사용하지 않는다.

다음의 요구사항을 래픽토링 단계에서 발견하고 아찔했다. 현재 내 BridgeGame 클래스는  대부분 InputView, OutputView를  사용해서 로직을 딴 상황..

메서드분리하며 길이만 줄이면 된다고 생각했는데 생각보다 리팩토링이 오래걸릴것 같다.

1차 리팩토링 과정 해야할 것.

1. BridgeGame 클래스에서 InputView, OutputView 를 사용하지 않는다. -> 메인메서드에서 호출하고 받아온 값을 다리게임클래스에 넘겨주면될까?

2. 메서드 분리해서 10줄 이하로 줄이기

3. BridgeGame 내의 인스턴스 수 줄이기


4주차 소감

 

안녕하세요. 이번주는 마지막 미션이었던 만큼 아쉽고 시간이 짧게만 느껴졌던 한주였습니다. 가장 많은 요구사항이 추가된 미션인만큼, 조건을 충족시키기가 어려웠지만 또 그만큼 가장 명확했던 미션이라고 느껴졌습니다.

 

이번 미션을 진행하면서 가장 어려웠던 점은 “BridgeGame 클래스에서 InputView, OutputView 를 사용하지 않는다.” 라는 요구사항을 지키는 것이었습니다. MVC 패턴을 사용하기 위한 가장 기본적인 요구사항인데 구현과정에서 어려움을 겪다보니, 그동안 얼마나 컴포넌트의 역할을 명확하게 분리하지않고 코딩해왔는지를 느낄 수 있었습니다. 또한 이 과정에서 전 주차에 고민했던 private 변수를 외부에서 어떻게 사용할 것인지에 대한 고민이 이어졌습니다. 그러나 요구사항을 지키며 각 컴포넌트의 역할에 대해 고민하다보니, 자연스럽게 컨트롤러에서 각 클래스의 메서드를 호출할 때 매개변수로 값들을 넣어주는 방식으로 해결할 수 있었습니다.

 

한달간 프리코스에 참여하면서 스스로 많이 성장했다는 생각이 듭니다. 아직 부족함이 많은 코드이지만 야구미션 당시 제출했던 코드와 비교해보면 훨씬 깔끔하고 읽기좋은 코드가 같습니다. 무엇보다 공부하는 과정에서 가장 막연했던, “내가 무엇을 모르고, 무엇을 공부해야할 라는 고민에 대해 방향이 어느정도 선명해져서 너무나도 뜻깊었던 시간이었습니다. 4주동안 미션을 진행하면서 아직 테스트 코드 작성이라는 산을 뛰어넘지 못한 같아 아쉬움이 있지만, 앞으로 정복해야할 목표라는 마음으로 열심히 해보려고 합니다. 감사합니다.

 

 

 

 

 

https://github.com/woowacourse-precourse/java-bridge/pull/790

 

[다리 건너기] 이채영 미션 제출합니다. by chaeyeong222 · Pull Request #790 · woowacourse-precourse/java-bridge

 

github.com