[작년 문제 풀어보기] 5기 4주차 피드백

별의개발자커비·2023년 10월 2일
1

우테코 도전기

목록 보기
11/37
post-thumbnail

📝 내 코드 피드백

  1. 에러 메시지 등 상수화 안한 거 마지막에 신경쓰기
  2. 메소드간 공백 같은 컨벤션 정리하기
  3. enum 바로 스태틱으로 불러오기보다 그것도 상수화시키기

🔎 스터디원 코드 분석

1. 예외 처리 - read()

  • 입력 오류일때 예외 출력하고 다시 돌아오는 걸 이렇게 구현했다.
    Function, Supplier 객체를 알아봐야겠다.
Function.apply()
Supplier.get()

위의 코드에서 `BridgeSize bridgeSize = read(BridgeSize::from, inputView::readBridgeSize);` 라인은 제네릭 메서드 `read`를 사용하여 `BridgeSize` 객체를 초기화하는 부분입니다. 이 코드 라인의 작동 원리는 다음과 같습니다:

1. `read` 메서드는 두 개의 매개변수를 받습니다. 첫 번째 매개변수 `Function<T, R> object`는 변환 함수를 나타내며, 두 번째 매개변수 `Supplier<T> input`은 입력 데이터를 제공하는 함수입니다.

2. `BridgeSize::from`은 `BridgeSize` 클래스의 정적 메서드인 `from`을 나타냅니다. 이 메서드는 입력으로 받은 문자열을 파싱하여 `BridgeSize` 객체를 생성하고 반환합니다.

3. `inputView::readBridgeSize`는 `inputView` 객체의 `readBridgeSize` 메서드를 나타냅니다. 이 메서드는 사용자로부터 입력을 읽어옵니다.

4. `read` 메서드는 `input.get()`을 호출하여 입력 데이터를 가져오고, 그 후에 `object.apply(...)`를 호출하여 변환 함수를 사용하여 입력 데이터를 변환합니다. 이 때, 변환 함수는 `BridgeSize::from`이 됩니다.

5. 만약 변환 함수(`BridgeSize::from`)에서 예외(일반적으로 `IllegalArgumentException`)가 발생하면, `catch` 블록에서 해당 예외 메시지를 출력하고 사용자로부터 새로운 입력을 받을 수 있도록 재귀적으로 `read` 메서드를 호출합니다. 이렇게 하면 사용자가 유효한 입력을 제공할 때까지 입력을 반복해서 받을 수 있습니다.

결국, `BridgeSize` 객체를 초기화하기 위해 사용자로부터 입력을 받고, 이 입력을 `BridgeSize::from` 메서드를 사용하여 변환하여 `BridgeSize` 객체로 반환하는 과정을 수행하는 코드 라인입니다. 이를 통해 `BridgeSize` 객체를 초기화하고, 이를 이용하여 게임 초기화를 진행합니다.

0. 소소한 것들

  1. toCommand라는 네이밍?

1. Predicate<T>

해당 포스팅 발췌

2. String.format

3. 다시 천천히 읽어보면서 정리하기

0개의 댓글