Conversation
src/main/java/NumberGenerator.java
Outdated
| @@ -0,0 +1,3 @@ | |||
| public interface NumberGenerator { | |||
| int generate(); | |||
| } No newline at end of file | |||
There was a problem hiding this comment.
파일 끝에 개행이 누락된 것 같아요! POSIX 표준에서는 텍스트 파일의 마지막 줄도 개행으로 끝나야 하는데, 지금 파일의 경우 개행 없이 끝나서 경고가 발생하고 있어요.
IntelliJ를 사용중이시라면
Settings→Editor→General→Ensure every saved file ends with a line break설정을 체크하면 파일 끝에 자동으로 개행을 적용해주니 참고해보세요!
There was a problem hiding this comment.
피드백 감사합니다! IntelliJ 설정 적용했고, 코드에도 반영했습니다.
src/main/java/RacingGame.java
Outdated
| winners.add(car); | ||
| } | ||
| } | ||
| } No newline at end of file |
| public int generate() { | ||
| return random.nextInt(BOUND); | ||
| } | ||
| } No newline at end of file |
src/test/java/CarTest.java
Outdated
|
|
||
| assertThat(car.getPosition()).isEqualTo(0); | ||
| } | ||
| } No newline at end of file |
src/test/java/RacingGameTest.java
Outdated
| .extracting(Car::getName) | ||
| .containsExactlyInAnyOrder("pobi", "crong"); | ||
| } | ||
| } No newline at end of file |
| index++; | ||
| return number; | ||
| } | ||
| } No newline at end of file |
|
대현님 안녕하세요~! 저도 리뷰가 처음인지라 잘 부탁드리겠습니다 ㅎㅎ 질문에 대한 답변
저도 이 미션을 진행하면서 테스트 단계에서 랜덤성을 어떻게 고정해서 테스트할 수 있을까에 대한 고민을 했었는데요, 아마 대현님도 동일한 부분에서 고민을 하신걸로 보여요. 개선 포인트
학습 포인트
|
| private final NumberGenerator numberGenerator; | ||
|
|
||
| public RacingGame(List<Car> cars, NumberGenerator numberGenerator) { | ||
| this.cars = cars; |
There was a problem hiding this comment.
외부에서 받은 List<Car>를 그대로 참조하고 있는데, 외부에서 리스트를 변경하면 게임 내부 상태도 함께 바뀌는 상황이 생길 수 있어요. 어떻게 개선할 수 있을까요?
| } | ||
|
|
||
| private int getMaxPosition() { | ||
| int maxPosition = 0; |
There was a problem hiding this comment.
maxPosition의 초기값이 0으로 설정되어있어서, 아직 아무도 전진하지 않은 상태에서 getWinners()를 호출하면 모든 차가 우승자로 반환될 것 같아요. 이 동작이 의도된 것인지 한번 생각해보시면 좋을 것 같습니다!
| public void move(int number) { | ||
| if (isMovable(number)) { | ||
| position++; | ||
| } | ||
| } | ||
|
|
||
| private boolean isMovable(int number) { | ||
| return number >= MOVE_CONDITION; | ||
| } | ||
|
|
||
| public String getName() { | ||
| return name; | ||
| } |
There was a problem hiding this comment.
현재 isMovable()이 move()와 getName()사이에 위치해 있어서 public → private → public 순서가 되고 있어요. 일반적으로 자바에서 통용되는 메소드 배치 순서가 있는데, 이 글 참고하셔서 한번 정리해보시는 것도 좋을 것 같습니다!
숫자 생성 역할을 분리하기 위해
NumberGenerator인터페이스와 구현 클래스를 나누었는데,이 과정에서 클래스가 다소 많아지는 느낌이 들어 적절한 설계인지 고민이 있었습니다.
실제 랜덤 생성과 테스트용 숫자 생성을 분리한 방식이 괜찮은지,
혹은 현재 단계에서 더 단순하고 좋은 방법이 있는지 궁금합니다.
또한 자바가 아직 익숙하지 않아,
제가 더 공부하면 좋을 개념이나 키워드가 있다면 함께 알려주시면 감사하겠습니다!