Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

요구사항 반영해서 올립니다. #5049

Open
wants to merge 10 commits into
base: jinyounglee
Choose a base branch
from

Conversation

jinyounglee
Copy link

merge 해주셨지만 요구사항 반영해서 올립니다.
혹시 수정할게 더 있으면 알려주세요

Copy link

@pci2676 pci2676 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

조금 아쉬운 점이 있어 리뷰를 남겨두었습니다.

리뷰 확인후 다시 요청부탁드리겠습니다.

Comment on lines +29 to +49
private void race() {
RacingCars racingCars = new RacingCars(carNumber);
for (int i = 0; i < rounds; i++) {
new Round(racingCars).race();
showRacingCarsMovingDistance(racingCars);
System.out.println(ROUND_END);
}
}

private void showRacingCarsMovingDistance(RacingCars racingCars) {
for (Car car : racingCars.getRacingCars()) {
System.out.println(showCarMovingDistance(car));
}
}

private String showCarMovingDistance(Car car) {
StringBuilder distance = new StringBuilder();
for (int i = 0; i < car.getMoving().getMovingDistance(); i++) {
distance.append(MOVE);
}
return distance.toString();
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

앗 view에 도메인 로직이 너무 많이 스며들어 있습니다.

domain 로직은 view와 관련이 없도록, 독립적인 형태를 띄도록 다른 패키지에서 작성해보시면 좋을것 같습니다.

Copy link
Author

@jinyounglee jinyounglee Nov 8, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pci2676 궁금한게 저번 pr 에서 Car 에 "-" 변수는 view에 있어야 할거 같다고 해서 뺐는데 도메인 로직이(Car) 없이는 이동거리를 구현하기가 쉽지않아 보입니다. 좋은 방법이 있을까요?

car.move(5);
assertThat(car.getMovingDistance()).isEqualTo("-");
}
System.out.println("inputValue=" + inputValue);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

보통 테스트 코드에는 console에 추가하는 코드를 제거하는 편입니다.

테스트 코드만 보고 이해하기 힘들어 넣은것이 아니라면 제거해주시고

테스트 코드만 보고 이해하기 힘들어 넣은것이라면 전체적인 구조의 개선이 필요하다는 신호로 눈치챌 수 있을것 같습니다.

@@ -9,8 +8,7 @@ public class Main {
public static void main(String[] args) {
InputView inputView = new InputView();
inputView.prepareRace();
Race race = new Race(inputView.getCarNumbers(), inputView.getTryNumbers());
ResultView resultView = new ResultView(race);
ResultView resultView = new ResultView(inputView.getCarNumbers(), inputView.getTryNumbers());
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아래와 같은 그림이 되도록 한번 개선해보시겠어요?

도메인 로직은 view의 구체적인 타입과 관련없이 사용할 수 있는 상태로 관리하고
조금 더 응집되도록 하나의 객체로 관리해보시면 좋을것 같습니다.

RacingApplication application = new RacingApplication(new InputView(), OuputView())
application.run()

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

네 그렇게 개선을 해볼게요!


private static final int MINIMUM_RANDOM_NUMBER = 4;

private Moving moving;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moving이 가변적이라서 final을 붙이지 않을거라면

move를 할때마다 새로운 Moving을 주입해주는것도 하나의 방법입니다.
다만 이렇게 할때는 moving내부의 값도 불변인것이 좋습니다. 추적이 힘들어져요..

그렇지 않다면 final을 굳이 붙이지 않을 이유가 없습니다. IDE에서도 경고를 하고 있네요 😅

Comment on lines +7 to +11
public CarMoving() {}

public CarMoving(int movingDistance) {
this.movingDistance = movingDistance;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
public CarMoving() {}
public CarMoving(int movingDistance) {
this.movingDistance = movingDistance;
}
public CarMoving(int movingDistance) {
this.movingDistance = movingDistance;
}
public CarMoving() {
this(0);
}

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

생성자를 명시적으로 사용하는것도 좋은 방법입니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants