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

Step5 - 자동차 경주(리팩토링) 및 피드백 반영 #2396

Merged
merged 9 commits into from Jul 26, 2021
3 changes: 2 additions & 1 deletion src/main/java/racingcar/RacingGame.java
Expand Up @@ -28,7 +28,8 @@ public static void main(String[] args) {
Winner winner = Winner.of(Winner.resultPointOfFirst(cars));
System.out.println(winner.firstResultPoint());

winner.winnerSelection(resultView, cars);
List<Car> winners = winner.winnerSelection(cars);
resultView.getWinner(winners);
}

public static void printAll(List<Car> cars) {
Expand Down
10 changes: 8 additions & 2 deletions src/main/java/racingcar/domain/Name.java
Expand Up @@ -2,17 +2,23 @@

public class Name {
private static final int LIMIT_CAR_NAME_LENGTH = 5;
private static final String ERR_MESSAGE = "이름은 5글자가 최대입니다.";

Choose a reason for hiding this comment

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

#2396 (comment) 에서 남긴 피드백은 "이름은 " + LIMIT_CAR_NAME_LENGTH + "글자가 최대입니다."와 같이 예외처리에서 사용하는 상수에 대한 하드코딩을 말씀드렸는데 전달이 잘못된 것 같군요 😮


private String carName;

private Name(String carName) {
this.carName = carName;
}

public static Name validateByName(String carName) {
public static Name createName(String carName) {
if(carName.length() >= LIMIT_CAR_NAME_LENGTH) {
throw new IllegalArgumentException("이름은 5글자가 최대입니다.");
throw new IllegalArgumentException(ERR_MESSAGE);
}

return new Name(carName);
}

public String getCarName() {
return carName;
}
}
4 changes: 2 additions & 2 deletions src/main/java/racingcar/domain/Winner.java
Expand Up @@ -30,11 +30,11 @@ private int getFirstResultPoint() {
return firstResultPoint;
}

public void winnerSelection(ResultView resultView, List<Car> cars) {
public List<Car> winnerSelection(List<Car> cars) {
List<Car> winners = cars.stream()
.filter(car -> car.getMoveSpace() == firstResultPoint())
.collect(Collectors.toList());

resultView.getWinner(winners);
return winners;
}
}
3 changes: 2 additions & 1 deletion src/main/java/racingcar/utils/RandomNumber.java
Expand Up @@ -5,6 +5,8 @@
public class RandomNumber {
private static final int MAX_VALUE = 10;

private final Random random = new Random();

private int randomNumber;

public int producedRandomNumber() {
Expand All @@ -13,7 +15,6 @@ public int producedRandomNumber() {
}

private int createRandomNum() {
Random random = new Random();
return random.nextInt(MAX_VALUE);
}
}
6 changes: 4 additions & 2 deletions src/main/java/racingcar/view/InputView.java
Expand Up @@ -25,9 +25,11 @@ public String[] splitCarName(String text) {
private String[] createNameOfCarsArray(String text) {
String[] cars = text.split(",");
for (int i = 0; i < cars.length; i++) {
Name.validateByName(cars[i]);
Name name = Name.createName(cars[i]);
cars[i] = name.getCarName();
}
return text.split(",");

return cars;
}

public int getNumberOfTry() {
Expand Down
5 changes: 1 addition & 4 deletions src/test/java/racingcar/CarTest.java
Expand Up @@ -14,14 +14,12 @@

class CarTest {
Car car;
Random random;

@BeforeEach
void setUpCar() {
String[] carNames = {"pobi"};
List<Car> cars = Car.createCars(carNames);
car = cars.get(0);
random = new Random();
}

@Test
Expand All @@ -31,8 +29,7 @@ void randomValueTest() {
int result = 0;

for(int i = 0; i < tryNumber; i++){
int randomNumber = random.nextInt(10);
result = car.move(randomNumber);
result = car.move(5);
}

assertThat(car.getMoveSpace()).isEqualTo(result);
Expand Down